本文共 3329 字,大约阅读时间需要 11 分钟。
Selenium 是一个用于测试 Web 应用程序的工具。其独特之处在于,它能够直接在浏览器中执行操作,与真正的用户操作一模一样。支持的浏览器包括 IE(7,8,9,10,11)、Firefox、Safari、Google Chrome、Opera、Edge 等。
WebDriver
WebDriver 是 Selenium 提供的核心 API,用来操作浏览器。它允许你执行如打开页面、定位元素、点击按钮等操作,是我们编写自动化测试用例的主要工具。IDE
IDE 是 Selenium 提供的一个插件,允许用户录制并回放用户操作。它对于新手来说堪称完美的起点。Grid
Grid 是 Selenium 的分布式工具,允许你在多个浏览器上并行执行测试用例。它极大地提升了测试效率。Selenium 的核心思想是模拟用户操作。它通过驱动浏览器,发送指令并等待页面状态变化。这种方式确保了操作更加自然,避免了传统测试工具的局限性。
安装 Selenium
在 Python 中安装 Selenium,可以使用 pip 终端命令:pip install selenium
配置浏览器驱动
依据你的浏览器选择合适的驱动,下载 ZIP 包,并将驱动添加到环境变量或在代码中指定路径。导入依赖
确保导入必要的模块,如selenium.webdriver.Chrome
。 生成驱动
初始化浏览器驱动,可以通过固定路径或环境变量指定浏览器位置:from selenium import webdriverdriver = webdriver.Chrome(executable_path='./etc/chromedriver.exe')
执行测试步骤
使用 WebDriver 的 API 指令浏览器操作,如打开页面、定位元素并进行输入等。断言
确保测试结果正确,常用断言方式包括检查页面标题、元素属性或文本内容等。from selenium import webdriverdriver = webdriver.Chrome()driver.get('https://www.baidu.com/')
Selenium 提供多种元素定位方式,常用有:id、name、class name、link text、partial link text、tag name、xpath 和 css_selector。
element = driver.find_element_by_id('kw')# 或者element = driver.find_element(By.ID, 'kw')
# xpath 示例element = driver.find_element_by_xpath('//div[@id="wraf"]')# css_selector 示例element = driver.find_element_by_css_selector('#wraf > div')
element = driver.find_element_by_id('su')element.click()
element = driver.find_element_by_id('kw')element.send_keys('自动化测试')
element = driver.find_element(By.ID, 'kw')element.send_keys('自动化测试')sleep(2)element.clear()
driverquit()
title = driver.title
driver.maximize_window()
页面元素加载
使用WebDriverWait
和 expected_conditions
控cassertion: from selenium.webdriver.wait import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECelement = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'kw')))
隐式等待
默认等待时间为元素加载完成:driver.implicitly_wait(5)
显式等待
通过指定方法和等待时间硬性等待:from selenium.webdriver.wait import WebDriverWaitwait = WebDriverWait(driver, 10)element = wait.until(EC.presence_of_element_located((By.ID, 'kw')))
Selenium 提供 ActionChains
类,允许你编写复杂操作如拖拽、右键点击等。
from selenium.webdriver import ActionChainsaction = ActionChains(driver)action.drag_and_drop(dragger, drop_element).perform()
assert driver.title == '百度一下,你就知道'
element = driver.find_element_by_id('kw')assert element.text == '搜索'
assert element.get_attribute('placeholder') == '输入设置'
获取当前页面截图,保存为图片文件:
driver.get_screenshot_as_file('./test.png')
current_handle = driver.current_window_handle# 切换到新窗口driver.switch_to_window(new_handle)
driver.switch_to.default_window()
driver.switch_to.frame(element)# 或者driver.switch_to.frame('frame_id')
driver.switch_to.parent_frame()
# 获取弹窗alert = driver.switch_to.alert()# 接受弹窗alert.accept()
# 定位文件输入框input = driver.find_element_by_id('file_input')# 上传文件input.send_keys('/路径/到/文件')
driver.execute_script('javascript代码')
result = driver.execute_script('return javascript代码')
通过以上方法,可以全面掌握 Selenium 的核心功能。如果有更多具体场景需求,请参考 Selenium 官方文档。
转载地址:http://cxvoz.baihongyu.com/