当前位置: 首页 > article >正文

Web测试自动化工具Selenium的使用

Web测试自动化工具Selenium的使用

Selenium是一个Web应用测试的自动化工具,它通过模拟点击实现对Web应用的功能测试。测试时,除了Selenium,还需要对应的浏览器驱动,如在Chrome实现自动点击,则需要chromedriver。

Selenium支持多种语言和多种浏览器,本文仅记录python+chrome的使用。


1. 安装python

2. 安装Selenium
pip install selenium

注意:

  1. 若安装的Selenium版本>=4.6,Selenium会自动下载对应浏览器的驱动,无需手动下载。Selenium更新说明:Unable to Locate Driver Error
  2. 若Selenuim版本>=4.6,但是Selenium无法自动下载驱动,可以通过手动下载并配置驱动。
  3. 若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()

http://www.kler.cn/news/157568.html

相关文章:

  • Java中熟练掌握BigDecimal运用-工具类
  • netcore swagger 错误 Failed to load API definition
  • 【开源】基于Vue+SpringBoot的康复中心管理系统
  • 【Unity动画】Unity 动画播放的流程
  • Python处理Point, MultiPolygon, Polygon, LineString等Geo地理形状数据
  • 根据已有安装的cuda配置合适的pytorch环境
  • vue:ESLint如何自动修复代码
  • IntelliJ IDEA的下载安装配置步骤详解
  • 开源堡垒机Jumpserver
  • 人工智能|网络爬虫——用Python爬取电影数据并可视化分析
  • 记录33333
  • 大数据项目——基于Django协同过滤算法的房源可视化分析推荐系统的设计与实现
  • 图像万物分割——Segment Anything算法解析与模型推理
  • 【NGINX--12】性能调优
  • WPF halcon 机器视觉
  • 【安卓】安卓xTS之Media模块 学习笔记(1) xTS介绍
  • C语言小游戏:三子棋
  • MATLAB算法实战应用案例精讲-【数模应用】机器学习-聚类算法
  • 【物联网】Node-RED
  • 目标检测YOLO实战应用案例100讲-基于深度学习的输电线路 鸟巢检测
  • 创建conan包-打包现有二进制文件
  • CeresPCL 拟合椭圆(2D)
  • 问题:HTTP method names must be tokens
  • Ubuntu显卡及内核更新问题
  • freeRTOS创建任务
  • rust入门(rust教程、rust安装方法)
  • 【云原生 | Docker】Docker核心概念 应用上手最佳流程
  • Unity版本使用情况统计(更新至2023年10月)
  • ESP32-Web-Server编程-通过 Web 下载文本
  • 基于APM(PIX)飞控和mission planner制作遥控无人车-从零搭建自主pix无人车普通舵机转向无人车-1(以乐迪crossflight飞控为例)