Web测试自动化工具Selenium的使用
Web测试自动化工具Selenium的使用
Selenium是一个Web应用测试的自动化工具,它通过模拟点击实现对Web应用的功能测试。测试时,除了Selenium,还需要对应的浏览器驱动,如在Chrome实现自动点击,则需要chromedriver。
Selenium支持多种语言和多种浏览器,本文仅记录python+chrome的使用。
1. 安装python
略
2. 安装Selenium
pip install selenium
注意:
- 若安装的Selenium版本>=4.6,Selenium会自动下载对应浏览器的驱动,无需手动下载。Selenium更新说明:Unable to Locate Driver Error
- 若Selenuim版本>=4.6,但是Selenium无法自动下载驱动,可以通过手动下载并配置驱动。
- 若Python版本低于3.10,可能出现Open SSL版本过低的问题(
ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with XXX
),网上很多解决方法都是下载Open SSL的源码去编译,也可以选择升级Python版本。
3. 下载chromedriver及配置(可选)
下载
chrome版本和chromedriver版本是一一对应的(并非严格对应,下载离chrome版本最近的chromedriver即可),在chrome浏览器访问chrome://version/可以查看chrome版本,然后在https://chromedriver.chromium.org/downloads下载跟chrome浏览器版本一致的chromedriver。
如果chrome是最新版本,对应版本的chromedriver可能并没有发布。如果chrome是最新版本,使用最新版本的chromedriver无法驱动chrome时,可以在https://googlechromelabs.github.io/chrome-for-testing/下载未正式发布的测试版chromedriver。
配置
将步骤3下载的压缩包解压,拿到chromedriver.exe。注意,很多教程会让你把chromedriver.exe放到Chrome安装目录下的Application文件夹中,并把Application文件夹的路径配置到环境变量path中。实际上,你放在任何一个目录都行,然后把这个目录添加到环境变量path即可。
如果你用PyCharm进行调试,可能碰到已经将chromedriver配置到环境变量中,但还是启动浏览器失败的情况,这可能是因为当前项目的虚拟环境中没有chromedriver(此时环境变量中的chromedriver并未起作用)。解决办法是将chromedriver复制到当前项目的虚拟环境中,虚拟环境路径可通过File -> Settings -> Project: [项目名称] -> Project Interpreter
, 查看Project Interpreter的值获取。
4. 示例代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
# 打开Chrome浏览器
driver = webdriver.Chrome()
# 最大化窗口
driver.maximize_window()
# 页面加载最长等待时间
driver.implicitly_wait(20)
# 打开网站
driver.get('http://www.baidu.com')
# 根据名称定位输入框,并输入内容到输入框
driver.find_element(By.NAME, "wd").send_keys("Selenium使用教程")
# 根据id定位”百度一下“按钮并点击
driver.find_element(By.ID, "su").click()
# 获取Action对象,模拟鼠标操作
actions = ActionChains(driver)
# 获取页面高度
check_height = driver.execute_script("return document.body.scrollHeight;")
print(check_height)
# 往下滚动一个页面的高度(模拟鼠标滚轮)
driver.execute_script("window.scrollBy(0,{})".format(check_height))
# 鼠标悬停
actions.move_to_element(driver.find_element(By.LINK_TEXT, "设置")).perform()
# 通过链接的文本定位元素并点击
driver.find_element(By.LINK_TEXT, "搜索设置").click()
# 通过xpath切换到”高级搜索“
driver.find_element(By.XPATH, "/html/body/div[3]/div[5]/div/div/ul/li[2]").click()
# 关闭弹窗
driver.find_element(By.XPATH,'//*[@id="wrapper"]/div[5]/span/i').click()
# 清空搜索栏内容
driver.find_element(By.NAME, "wd").clear()
# 向上滚动页面
driver.execute_script("window.scrollBy(0,{})".format(-check_height))
print(driver.current_url)
driver.find_element(By.NAME, "wd").send_keys("如何使用百度")
driver.find_element(By.ID, "su").click()
time.sleep(10)
# 关闭浏览器
driver.quit()