Selenium工具学习

简介: Selenium工具学习

Selenium 自动化测试



什么样的项目适合自动化测试


  1. 项目周期长
  2. 需求变动不频繁
  3. 需要回归测试


其他自动化测试工具介绍


  • QTP —-商业自动化测试工具
  • Selenium——–开源自动化测试工具,主要做功能测试
  • Robot Framework ——基于python的可扩展的关键字驱动的测试自动化测试框架


Selenium 的特点


  • 是一个web自动化测试工具(简单来说就是只支持web的自动化测试)
  • 跨平台(linux、windows、mac)
  • 支持多种语言
  • 成熟稳定
  • 功能强大


我们现阶段学习的是web


基于python环境搭建selenium


from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# 其中添加的是浏览器的驱动器地址
executable_path = r'H:\pythonStudy\Driver\chromedriver.exe'
# 注意 python的形参最好指定一下形参的变量值, 就像以下的两个
service = Service(executable_path=executable_path)
driver = webdriver.Chrome(service=service)
# driver = webdriver.Chrome()
driver.get('https://wclspace.xyz')
sleep(3)
driver.quit()


Demo Begin


image-20230508164209205.png


元素定位

image-20230510202929720.png


元素定位时依赖于什么


  1. 标签
  2. 路径
  3. 层级
  4. 路径


元素定位方式总共有八种


  • id
  • name
  • class_name —-使用元素的class属性
  • tag_name—- 使用标签名称
  • link_text —– 定位超链接
  • partial_link_text —- 定位超链接
  • Xpath ——基于元素路径
  • CSS ——-基于元素选择器

各种定位


  • 通过id定位,一般是唯一标识符
  • 通过name定位, 可以重名,但是前提是元素必须有name属性。
  • 通过class_name定位 : 通过元素的class属性来定位, 一般来说class属性一般为多个值。


实现



from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
# 其中添加的是浏览器的驱动器地址
executable_path = r'H:\pythonStudy\Driver\chromedriver.exe'
# 注意 python的形参最好指定一下形参的变量值, 就像以下的两个
service = Service(executable_path=executable_path)
driver = webdriver.Chrome(service=service)
# driver = webdriver.Chrome()
driver.get('https://baidu.com')
driver.find_element(By.ID, 'kw').send_keys("wclas")
driver.find_element(By.CLASS_NAME, 'kw').send_keys("wclas")
sleep(3)
driver.quit()


方法被弃用问题


image-20230508163454200.png


其他定位

name

输入框有个name属性:name="wd",这里可以通过它的name属性定位到这个元素,并且通过send_keys()传输字符给输入框。

标签名(tag_name)


输入框有个tag(标签)属性:input,这里可以通过它的标签属性定位到这个元素,并且通过send_keys()传输字符给输入框。但是标签往往不是惟一的,所有在实际应用中不常用。
html中的相关标签
- a
- input
- form
...
# 页面种如果存在多个相同的标签名 ,默认返回第一个
# driver.find_element(By.CLASS_NAME, "bg s_ipt_wr new-pmd quickdelete-wrap").send_keys("wclas")

link_text (定位超链接)


定位超链接
只能定位a标签
精准匹配


driver.find_element(By.LINK_TEXT, "新闻").click()
sleep(3)
driver.quit()

partial_link_text定位元素


如果链接的字符串太长的话,全部输入影响代码美观也容易出错,这时就可以采用 partial_link_text,模糊匹配、截取字符串的一部分定位到元素。如图2中,我们定位新闻可以如下写。
定位的内容可以模块部分值, 但是必须能代表唯一性


XPath定位


1.为什么要有XPath


如果没有id、name、calss ,该如何定位 ? 
如果通过name、class、tag_name 无法定位到唯一的元素该如何定位 ?


2.什么是Xpath ?


xpath依赖于元素的路径


他是基于XML(标记语言)、Path的简称, 他是一种在xml文档中查找元素信息的语言。


HTML可以看作是XML的一种实现方式,所以Selenium可以在web中定位元素


3.扩展


一般情况下, 尽量使用相对路径而不是用绝对路径。


最好不使用指定标签名称,不使用* 代替,效率非常慢


/ 后面必须为元素的名称 或者 *


XPath定位策略


四种:


1.路径-定位


匹配输入账号(相对路径)
//input[@id='usernameA']
匹配输入账号(绝对路径)
/html/body/form/div/fieldset/p[1]/input
匹配输入账号(通过内置函数)
//*[contains(@type, 'password')]  #匹配type
匹配输入密码
//input[@id='passwordA']

image-20230508172924213.png


2.利用元素属性-定位


3.属性与逻辑结合-定位


4.层级与属性结合定位


基本语法


// 后面跟的是相对路径
/ 后面跟决定路径

路径表达式


image-20230508173044713.png


xpath通配符


Xpath 表达式的通配符可以用来选取未知的节点元素,基本语法如下:


image-20230508173206247.png


Xpath内建函数


Xpath 提供 100 多个内建函数,这些函数给我们提供了很多便利,比如实现文本匹配、模糊匹配、以及位置匹配等,下面介绍几个常用的内建函数。

image-20230508173244441.png



CSS定位


css 作为一种标记语言, 焦点、数据的样式。控制元素的显示样式。‘


css定位就是通过css选择器工具进行定位


driver.find_element(By.CSS_SELECTOR, "css选择内容")


常用策略


- id选择器


说明: 根据元素的id进行选择
格式: `#id`
例如: #user <选择id为user的元素>


- class选择器


说明: 根据元素的id进行选择
格式: `.id`
例如: .user <选择class为user的元素>


- 元素选择器


说明: 根据元素的标签名进行选择
格式: `element`
例如: input <选择所有input标签的元素>


- 属性选择器


说明: 根据元素的属性进行选择
语法: [属性名=属性值]
例如: [name='password']

image-20230510200847066.png

image-20230510200918183.pngimage-20230510200847066.png


- 层级选择器


语法: 
  1. p>input
  2. p input
提示: >  和 空格的区别, 大于必须为子元素,空格则不需要

Xpath 和 css定位的比较


image-20230510201050218.png


浏览器操作的常用方法



browser.get(url):打开指定的URL
browser.back():返回上一个页面
browser.forward():前进到下一个页面
browser.refresh():刷新当前页面
browser.quit():关闭浏览器窗口
browser.maximize_window():最大化浏览器窗口
browser.set_window_size(width, height):设置浏览器窗口大小
browser.switch_to.window(window_name):切换到指定窗口
browser.switch_to.frame(frame_reference):切换到指定的iframe窗口
browser.execute_script(script):在当前页面执行指定的JavaScript脚本
browser.save_screenshot(filename):将当前页面截图保存为指定的文件


测试


driver = webdriver.Chrome(service=service)
# driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://baidu.com')
sleep(2)
# todo 在第一个窗口中打开第二个窗口
driver.execute_script("window.open('https://www.wclspace.xyz')")
sleep(2)
driver.execute_script("window.open('https://www.alibaba.com')")
sleep(2)
# todo 获取所有的窗口句柄
windows = driver.window_handles
driver.switch_to.window(windows[1])  # 从0开始
sleep(2)
driver.quit()

image-20230508224147516.png




目录
相关文章
|
9月前
|
Web App开发 前端开发 测试技术
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用
|
6月前
|
前端开发 测试技术 Python
【Selenium全攻略】掌握这一工具,实现自动化测试的所有梦想
本文分享了使用Selenium进行UI自动化测试的全过程,包括开发环境部署、代码实现、思路分析和难点解析。作者通过一个实际案例,讲述了如何利用Selenium处理前端生成报告失败的问题,以及在UI自动化中定位元素和处理元素不唯一的情况。同时,文章强调了解决问题思路的重要性,鼓励读者开拓思维,寻找不同的解决方案。
199 4
【Selenium全攻略】掌握这一工具,实现自动化测试的所有梦想
|
2月前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
265 17
Selenium:强大的 Web 自动化测试工具
|
4月前
|
Web App开发 Java
使用java操作浏览器的工具selenium-java和webdriver下载地址
【10月更文挑战第12天】Selenium-java依赖包用于自动化Web测试,版本为3.141.59。ChromeDriver和EdgeDriver分别用于控制Chrome和Edge浏览器,需确保版本与浏览器匹配。示例代码展示了如何使用Selenium-java模拟登录CSDN,包括设置驱动路径、添加Cookies和获取页面源码。
298 6
|
9月前
|
Web App开发 测试技术 API
自动化测试工具Selenium的深度解析
【5月更文挑战第27天】本文旨在深入剖析自动化测试工具Selenium,探讨其架构、原理及应用。通过对其核心组件、运行机制及在实际项目中的应用案例进行详细解读,以期为软件测试人员提供全面、深入的理解与实践指导。
|
8月前
|
数据采集 Web App开发 前端开发
Selenium:自动化Web浏览器操作的强大工具
**Selenium** 是一款用于自动化Web应用测试和模拟用户行为的工具,支持多种浏览器和编程语言。安装包括安装Selenium库和对应浏览器的WebDriver。基本用法包括导入库、启动浏览器、查找与操作页面元素、等待元素加载及关闭浏览器。在实际项目中,Selenium常用于Web测试、爬虫、自动化表单填写等,优点是跨平台、模拟真实用户行为,但性能较低且依赖浏览器。
386 9
|
9月前
|
JSON 数据管理 测试技术
自动化测试工具Selenium Grid的深度应用分析深入理解操作系统的内存管理
【5月更文挑战第28天】随着互联网技术的飞速发展,软件测试工作日益复杂化,传统的手工测试已无法满足快速迭代的需求。自动化测试工具Selenium Grid因其分布式执行特性而受到广泛关注。本文旨在深入剖析Selenium Grid的工作原理、配置方法及其在复杂测试场景中的应用优势,为测试工程师提供高效测试解决方案的参考。
|
9月前
|
敏捷开发 监控 IDE
深入理解自动化测试工具Selenium的工作原理与实践应用
【5月更文挑战第26天】 随着敏捷开发和持续集成理念的普及,自动化测试在软件开发生命周期中扮演了至关重要的角色。Selenium作为最流行的自动化测试工具之一,以其开源、跨平台和支持多种编程语言的特性被广泛使用。本文将详细解析Selenium的核心组件,探讨其工作原理,并通过案例分析展示如何高效地实施Selenium进行Web应用的自动化测试。我们将从测试准备到结果分析的全过程,提供一系列实用的策略和最佳实践,帮助读者构建和维护一个健壮的自动化测试环境。
|
9月前
|
敏捷开发 IDE 测试技术
深入探索自动化测试工具Selenium的高效应用
【5月更文挑战第23天】 在快速演进的数字时代,软件开发周期不断缩短,而质量保证的需求却日益增加。自动化测试作为确保软件质量的关键手段之一,其重要性不言而喻。Selenium作为一种广泛使用的自动化测试工具,因其跨平台、多语言支持和开源等特性,在业界得到了广泛应用。本文将深入分析Selenium的核心功能,探讨其在真实项目中的应用策略,并通过案例分析展示如何通过Selenium提高测试效率和准确性。
|
9月前
|
敏捷开发 监控 测试技术
探索自动化测试工具Selenium Grid的高效集成策略
【4月更文挑战第30天】在现代Web应用的快速迭代和持续部署中,测试自动化已成为确保产品质量的关键。Selenium Grid作为一款支持多种浏览器和操作系统的测试工具,提供了并行执行测试用例的能力,极大地提升了测试效率。本文将深入探讨如何高效地将Selenium Grid集成到现有的测试框架中,以及实施过程中的最佳实践,帮助团队最大化测试覆盖率,同时降低资源消耗。