引言
selenium 是一个用于 web 应用自动化测试的强大工具,可以用来模拟用户操作浏览器,从而测试 web 应用的功能。它支持多种浏览器和编程语言,包括 python。下面我们将介绍如何使用 selenium 进行 web 自动化测试,包括环境配置、基本操作和一些高级用法。
安装 selenium 和浏览器驱动
首先,安装 selenium 库:
pip install selenium
然后,下载对应浏览器的驱动程序。以 chrome 为例,可以下载 chromedriver:
- 前往 chromedriver 下载页面。
- 下载与你的 chrome 版本匹配的驱动程序。
- 解压下载的文件,并将其路径添加到系统 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自动化测试的资料请关注代码网其它相关文章!
发表评论