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




目录
相关文章
|
1月前
|
Web App开发 前端开发 测试技术
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用
|
28天前
|
Web App开发 Java 测试技术
深入理解与应用软件自动化测试工具Selenium
随着软件开发的快速发展,软件测试在保证产品质量方面发挥着越来越重要的作用。其中,自动化测试以其效率高、成本低的特点受到了广大开发者的欢迎。本文主要介绍了自动化测试工具Selenium的基本概念、原理以及在实际开发中的应用,旨在帮助读者更好地理解和使用Selenium进行高效的自动化测试。
22 4
|
1月前
|
Web App开发 前端开发 JavaScript
Python Selenium是一个强大的自动化测试工具
Python Selenium是一个强大的自动化测试工具
|
2月前
|
Web App开发 测试技术 数据安全/隐私保护
Web自动化测试工具Selenium
Web自动化测试工具Selenium
|
2月前
|
监控 测试技术 API
自动化测试工具与电脑桌面监控软件的集成:Selenium与Python的无缝整合
在当今数字化时代,软件质量保证是每个软件开发团队都必须面对的重要挑战之一。自动化测试工具和电脑桌面监控软件的结合,为开发团队提供了一种有效的方式来确保软件的稳定性和性能。本文将介绍如何利用Python编程语言中的Selenium库,与桌面监控软件进行无缝整合,以实现对应用程序的自动化测试和桌面监控。
201 5
|
3月前
|
Web App开发 数据采集 JavaScript
【Python爬虫】<万物可爬>Selenium+自动化测试工具 获取数据
【1月更文挑战第22天】【Python爬虫】<万物可爬>Selenium+自动化测试工具 获取数据
|
5月前
|
测试技术 Python
【Python】自动化测试工具:Selenium
【Python】自动化测试工具:Selenium
66 0
|
7月前
|
Web App开发 JavaScript 前端开发
web自动化测试工具之Selenium的使用
Selenium是一个功能强大的自动化测试框架,在自动化测试和Web应用开发中具有广泛的应用,能够提高测试效率、确保应用程序的质量,并帮助开发人员在不同环境中构建和调试Web应用程序。
244 1
|
10月前
|
JavaScript 数据可视化 IDE
测试自动化工具比较:Selenium vs. Cypress
在软件开发过程中,测试自动化是一个关键的环节,它可以提高测试效率和质量,并帮助开发团队更快地交付高质量的软件。在测试自动化领域,Selenium和Cypress是两个备受关注的工具。本文将对它们进行比较,帮助开发者选择适合自己项目的测试自动化工具。
329 0
|
Web App开发 前端开发 Java
测试——自动化测试(Selenium工具)
测试——自动化测试(Selenium工具)
187 1

热门文章

最新文章