Python使用Selenium进行Web自动化测试

 更新时间:2024年08月02日 10:23:18   作者:杰哥在此  
Selenium 是一个用于 Web 应用自动化测试的强大工具,可以用来模拟用户操作浏览器,从而测试 Web 应用的功能,它支持多种浏览器和编程语言,包括 Python,下面我们将介绍如何使用 Selenium 进行 Web 自动化测试,需要的朋友可以参考下

引言

Selenium 是一个用于 Web 应用自动化测试的强大工具,可以用来模拟用户操作浏览器,从而测试 Web 应用的功能。它支持多种浏览器和编程语言,包括 Python。下面我们将介绍如何使用 Selenium 进行 Web 自动化测试,包括环境配置、基本操作和一些高级用法。

安装 Selenium 和浏览器驱动

首先,安装 Selenium 库:

pip install selenium

然后,下载对应浏览器的驱动程序。以 Chrome 为例,可以下载 ChromeDriver:

  1. 前往 ChromeDriver 下载页面
  2. 下载与你的 Chrome 版本匹配的驱动程序。
  3. 解压下载的文件,并将其路径添加到系统 PATH 中,或者在代码中指定驱动程序的路径。

基本用法

下面是一个基本的 Selenium 使用示例,演示如何打开浏览器、访问网页、查找元素并进行操作。

1. 打开浏览器并访问网页

from selenium import webdriver

# 创建浏览器驱动实例
driver = webdriver.Chrome()

# 访问网页
driver.get("https://www.example.com")

# 关闭浏览器
driver.quit()

2. 查找元素并进行操作

from selenium import webdriver
from selenium.webdriver.common.by import By

# 创建浏览器驱动实例
driver = webdriver.Chrome()

# 访问网页
driver.get("https://www.example.com")

# 查找元素
element = driver.find_element(By.NAME, "q")

# 输入文本
element.send_keys("Selenium")

# 提交表单
element.submit()

# 关闭浏览器
driver.quit()

高级用法

Selenium 还支持更高级的操作,如等待元素加载、处理弹出框和切换窗口等。

1. 显式等待和隐式等待

显式等待用于等待特定条件发生:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://www.example.com")

# 显式等待
try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.NAME, "q"))
    )
    element.send_keys("Selenium")
    element.submit()
finally:
    driver.quit()

隐式等待用于在找不到元素时等待一段时间:

driver = webdriver.Chrome()
driver.implicitly_wait(10)  # 隐式等待,最多等10秒
driver.get("https://www.example.com")

element = driver.find_element(By.NAME, "q")
element.send_keys("Selenium")
element.submit()

driver.quit()

2. 处理弹出框

from selenium.webdriver.common.alert import Alert

driver = webdriver.Chrome()
driver.get("https://www.example.com")

# 假设点击某个按钮会弹出一个 alert
button = driver.find_element(By.ID, "alertButton")
button.click()

# 切换到 alert 并接受
alert = Alert(driver)
alert.accept()

driver.quit()

3. 切换窗口

driver = webdriver.Chrome()
driver.get("https://www.example.com")

# 打开一个新窗口
driver.execute_script("window.open('https://www.google.com');")

# 获取所有窗口句柄
handles = driver.window_handles

# 切换到新窗口
driver.switch_to.window(handles[1])
print(driver.title)

# 切换回原来的窗口
driver.switch_to.window(handles[0])
print(driver.title)

driver.quit()

结合 JUnit 和 TestNG 进行测试

使用 Selenium 编写测试脚本后,可以结合 Python 的单元测试框架(如 unittest)来组织和运行测试用例。

import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By

class GoogleSearchTest(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Chrome()

    def test_search_in_google(self):
        driver = self.driver
        driver.get("https://www.google.com")
        self.assertIn("Google", driver.title)
        elem = driver.find_element(By.NAME, "q")
        elem.send_keys("Selenium")
        elem.submit()
        self.assertIn("Selenium", driver.page_source)

    def tearDown(self):
        self.driver.quit()

if __name__ == "__main__":
    unittest.main()

总结

Selenium 是一个功能强大的 Web 自动化测试工具,结合 Python 可以高效地进行 Web 应用的自动化测试。从基本的浏览器操作到复杂的用户交互,Selenium 提供了丰富的功能来满足不同的测试需求。希望以上示例能够帮助你更好地理解和使用 Selenium 进行 Web 自动化测试。

以上就是Python使用Selenium进行Web自动化测试的详细内容,更多关于Python Web自动化测试的资料请关注脚本之家其它相关文章!

相关文章

  • 解决Python pandas df 写入excel 出现的问题

    解决Python pandas df 写入excel 出现的问题

    今天小编就为大家分享一篇解决Python pandas df 写入excel 出现的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python实用技巧之临时文件的妙用

    Python实用技巧之临时文件的妙用

    当我们用Python编写程序时,有时候需要临时存储数据且不希望占用多少内存,这些情况下以创建临时文件的方式进行处理,既不会干扰本地文件系统,又安全省事。本文主要介绍了临时文件的一些妙用,希望大家能够喜欢
    2023-02-02
  • python pyinstaller打包exe报错的解决方法

    python pyinstaller打包exe报错的解决方法

    这篇文章主要给大家介绍了关于python pyinstaller打包exe报错的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • Python执行流程控制详情

    Python执行流程控制详情

    这篇文章主要介绍了Python执行流程控制,流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构、分支结构、循环结构,下文详细介绍需要的小伙伴可以参考一下
    2022-04-04
  • 解决python3捕获cx_oracle抛出的异常错误问题

    解决python3捕获cx_oracle抛出的异常错误问题

    今天小编就为大家分享一篇解决python3捕获cx_oracle抛出的异常错误问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Django通过自定义认证后端实现多种登录方式验证

    Django通过自定义认证后端实现多种登录方式验证

    Django提供了用户认证系统,那么如何在项目中进行应用呢?在本文中小编将给大家介绍如何使用用户认证系统,实现我们业务场景中常见的多种登录方式验证。感兴趣的小伙伴可以了解一下
    2021-12-12
  • 如何利用Python连接MySQL数据库实现数据储存

    如何利用Python连接MySQL数据库实现数据储存

    当我们学习了mysql数据库后,我们会想着该如何将python和mysql结合起来运用,下面这篇文章主要给大家介绍了关于如何利用Python连接MySQL数据库实现数据储存的相关资料,需要的朋友可以参考下
    2021-11-11
  • python自动化测试selenium操作checkbox和radiobox技术

    python自动化测试selenium操作checkbox和radiobox技术

    这篇文章主要为大家介绍了python自动化测试selenium核心技术操作checkbox和radiobox的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • Python数据分析之pandas函数详解

    Python数据分析之pandas函数详解

    这篇文章主要介绍了Python数据分析之pandas函数详解,文中有非常详细的代码示例,对正在学习python的pandas函数的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-04-04
  • 详解Python中的三元运算

    详解Python中的三元运算

    本文详细介绍了Python中的三元运算符的使用方法和技巧,三元运算也称三目运算,在Python中,三元运算也称为条件表达式,感兴趣的小伙伴可以参考阅读
    2023-04-04

最新评论