软件测试|Selenium常见api

简介: 软件测试|Selenium常见api

Selenium常用 API

WebDriver 常用API

  1. 打开浏览器

  • 用法:driver.get()
driver = webdriver.Chrome()
# 打开浏览器
driver.get("https://www.baidu.com/")
  1. 设置浏览器最大化

  • 用法:driver.maximize_window()
driver = webdriver.Chrome()
# 打开浏览器
driver.get("https://www.baidu.com/")
# 浏览器最大化
driver.maximize_window()
  1. 设置浏览器最小化

  • driver.minimize_window()
driver = webdriver.Chrome()
# 打开浏览器
driver.get("https://www.baidu.com/")
# 浏览器最小化
driver.minimize_window()
  1. 设置浏览器窗口大小

  • driver.set_window_size(宽,高)
driver = webdriver.Chrome()
# 打开浏览器
driver.get("https://www.baidu.com/")
# 设置浏览器宽为1200,高为800
driver.set_window_size(1200,800)
  1. 关闭浏览器当前窗口

  • driver.close()
driver = webdriver.Chrome()
# 打开浏览器
driver.get("https://www.baidu.com/")
# 关闭当前窗口
driver.close()
  1. 关闭所有关联窗口,并且安全关闭session

  • driver.quit()
driver = webdriver.Chrome()
# 打开浏览器
driver.get("https://www.baidu.com/")
# 关闭所有关联窗口
driver.quit()
  1. 隐式等待

  • driver.implicitly_wait()
driver = webdriver.Chrome()
# 打开浏览器
driver.get("https://www.baidu.com/")
# 设置等待时间为5秒,5秒之后找不到元素则抛出异常
driver.implicitly_wait(5)
  1. 获取当前页面Title

  • driver.title
driver = webdriver.Chrome()
# 打开浏览器
driver.get("https://www.baidu.com/")
# 打印百度的title(百度一下,你就知道)
title = driver.title
print(title)
  1. 获取当前页面源码

  • driver.page_source
driver = webdriver.Chrome()
# 打开浏览器
driver.get("https://www.baidu.com/")
# 打印百度的页面元素
page_source = driver.page_source
print(page_source)

控件元素定位 API

Selenium提供了八种定位方式:https://www.selenium.dev/documentation/webdriver/elements/locators/

定位器 Locator 描述
id 定位 id 属性与搜索值匹配的元素
name 定位 name 属性与搜索值匹配的元素
class name 定位class属性与搜索值匹配的元素(不允许使用复合类名)
css selector 定位 CSS 选择器匹配的元素
xpath 定位与 XPath 表达式匹配的元素
tag name 定位标签名称与搜索值匹配的元素
link text 定位link text可视文本与搜索值完全匹配的锚元素
partial link text 定位link text可视文本部分与搜索值部分匹配的锚点元素。如果匹配多个元素,则只选择第一个元素。
  1. 通过 id 定位(重点)

  • 用法: driver.find_element(By.ID, "ID属性对应的值")
# 通过 id 定位
driver.find_element(By.ID,"kw")
  1. 通过 name 定位(重点)

  • 用法: driver.find_element(By.NAME, "Name属性对应的值")
# 通过 name 定
driver.find_element(By.NAME,"wd")
  1. 通过 classname 定位(重点)

  • 用法: driver.find_element(By.CLASS_NAME, "ClassName属性对应的值")
# 通过 classname 定位
driver.find_element(By.CLASS_NAME,"s_ipt"))
  1. 通过 css selector 定位

  • 用法: driver.find_element(By.CSS_SELECTOR, "css表达式")
  • 复制css定位

# css selector定位
driver.find_element(By.CSS_SELECTOR,"#ember7 > header > div > div > div.panel.clearfix > span > button.widget-button.btn.btn-primary.btn-small.login-button.btn-icon-text > span")
css基础语法
类型 表达式
标签 标签名
.class属性值
ID #id属性值
属性 [属性名='属性值']
//在console中的写法,以百度首页为例
//标签名
$('input')
//.类属性值
$('.s_ipt')
//#id属性值
$('#kw')
//[属性名='属性值']
$('[name="wd"]')
css关系定位
选择器 例子 例子描述
.class .intro 选择 class = “intro” 的所有元素
#id #firstname 选择 id= "firstname " 的所有元素
* * 选择所有元素
element p 选择所有p元素
element,element div,p 选择所有div元素和选择所有p元素
element element div p 选择所有div元素内部的所有p元素
element>element div>p 选择父元素为div元素的所有p元素
element+element div+p 选择紧接在div元素之后的所有p元素
# 在console中的写法
# 元素,元素(选择所有bg、s_ipt_wr、new-pmd、quickdelete-wrap的元素)
$('.bg,.s_ipt_wr,.new-pmd,.quickdelete-wrap')
# 元素>元素(选择父元素id为s_kw_wrap元素下的所有input元素)
$('#s_kw_wrap>input')
# 元素 元素(选择所有form元素内部的所有input元素)
$('#form input')
# 元素+元素,了解即可(class为soutu-btn和input元素是相邻的兄弟的元素)
$('.soutu-btn+input')
# 元素1~元素2,了解即可(class为soutu-btn和i元素不是相邻的兄弟的元素)
$('.soutu-btn~i')
  1. 通过 xpath 定位

  • 用法: driver.find_element(By.XPATH, "xpath表达式")
  • 复制xpath定位

# css selector定位
# xpath定位
driver.find_element(By.XPATH,"//*[@id='ember7']/header/div/div/div[2]/span/button[2]/span")
xpath 基础语法
表达式 结果
/ 从该节点的子元素选取
// 从该节点的子孙元素选取
* 通配符
nodename 选取此节点的所有子节点
.. 选取当前节点的父节点
@ 选取属性
# 整个页面
$x("/")
# 页面中的所有的子元素
$x("/*")
# 整个页面中的所有元素
$x("//*")
# 查找页面上面所有的div标签节点
$x("//div")
# 查找id属性为site-logo的节点
$x('//*[@id="site-logo"]')
# 查找节点的父节点
$x('//*[@id="site-logo"]/..')
xpath 高级用法
语法 描述
[last()] 选取最后一个
[@属性名='属性值' and @属性名='属性值'] 与关系
[@属性名='属性值' or @属性名='属性值'] 或关系
[text()='文本信息'] 根据文本信息定位
[contains(text(),'文本信息')] 根据文本信息包含定位
# 选取最后一个input标签
//input[last()]
# 选取属性name的值为passward并且属性pwd的值为123456的input标签
//input[@name='passward' and @pwd='123456']
# 选取属性name的值为passward或属性pwd的值为123456的input标签
//input[@name='passward' or @pwd='123456']
# 选取所有文本信息为'霍格沃兹测试开发'的元素
//*[text()='霍格沃兹测试开发']
# 选取所有文本信息包'霍格沃兹'的元素
//*[contains(text(),'霍格沃兹')]
xpath 进阶语法
表达式 举例 结果
//标签名/标签名 //ul/* 选取ul的所有子元素
//标签名[int] //input[2] 选取第二个input元素
//标签名[last()] //input[last()] 选取最后一个input标签
//标签名[postion()<3] input[postion()<3] 选取前2个input元素
//标签名[@属性名='属性值'] //*[@value='text'] 选取所有value属性为text的元素
//标签名[@属性名='属性值' and @属性名='属性值'] //input[@name='passward' and @pwd='123456'] 选取属性name的值为passward并且属性pwd的值为123456的input标签
//标签名[text()='文本信息'] //*[text()='霍格沃兹测试开发'] 选取所有文本信息为'霍格沃兹测试开发'的元素
//标签名[contains(text(),'文本信息')] //*[contains(text(),'霍格沃兹')] 选取所有文本信息包'霍格沃兹'的元素

  1. 通过 tag 标签名称定位

  • 用法: driver.find_element(By.TAG_NAME, "tag标签名称")
# tag标签定位
tag = driver.find_element(By.TAG_NAME,"head")
  1. 通过 link_text 定位

  • 用法: driver.find_element(By.LINK_TEXT,"文本信息")
# link_text 定位
driver.find_element(By.LINK_TEXT,"霍格沃兹测试开发学社介绍")

  1. 通过partial_link_text定位

  • 用法: driver.find_element(By.PARTIAL_LINK_TEXT,"部分文本信息")
# partial_link_text 定位
driver.find_element(By.PARTIAL_LINK_TEXT,"测试开发学社介绍")

link_text和partial_link_text的区别:

link_text是完全匹配元素中会出现文字,partial_link_text可以是匹配全部元素也可以部分匹配元素的方式,可以写成:“霍格沃兹”、“测试开发学社”、“霍格沃兹测试开发学社介绍”

相关文章
|
24天前
|
Web App开发 前端开发 Java
《手把手教你》系列技巧篇(九)-java+ selenium自动化测试-元素定位大法之By name(详细教程)
【4月更文挑战第1天】 这篇教程介绍了如何使用Selenium Webdriver通过name属性来定位网页元素,作为系列教程的一部分,之前讲解了id定位,后续还会有其他六种定位方法。文中以百度搜索为例,详细说明了定位搜索框(name=&quot;wd&quot;)并输入关键词“北京宏哥”的步骤,包括手动操作流程、编写自动化脚本以及代码实现。此外,还提供了查看和理解Selenium源码的方法,强调了`open implementation`选项用于查看方法的具体实现。整个过程旨在帮助读者学习Selenium的元素定位,并实践自动化测试。
43 0
|
20天前
|
前端开发 Java 测试技术
《手把手教你》系列技巧篇(十二)-java+ selenium自动化测试-元素定位大法之By link text(详细教程)
【4月更文挑战第4天】本文介绍了link text在自动化测试中的应用。Link text是指网页中链接的文字描述,点击可跳转至其他页面。文章列举了8种常用的定位方法,其中着重讲解了link text定位,并通过实例展示了如何使用Java代码实现点击百度首页的“奥运奖牌榜 最新排名”链接,进入相应页面。如果link text不准确,则无法定位到元素,这说明linkText是精准匹配,而非模糊匹配。文章还提到了partial link text作为link text的模糊匹配版本,将在后续内容中介绍。
37 4
|
18天前
|
XML 前端开发 Java
《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)
【4月更文挑战第6天】按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath。xpath 的定位方法, 非常强大。使用这种方法几乎可以定位到页面上的任意元素。xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。XPath 是XML 和Path的缩写,主要用于xml文档中选择文档中节点。基于XML树状文档结构,XPath语言可以用在整棵树中寻找指定的节点。
44 0
|
2天前
|
数据采集 前端开发 测试技术
《手把手教你》系列技巧篇(三十一)-java+ selenium自动化测试- Actions的相关操作-番外篇(详解教程)
【4月更文挑战第23天】本文介绍了网页中的滑动验证码的实现原理和自动化测试方法。作者首先提到了网站的反爬虫机制,并表示在本地创建一个没有该机制的网页,然后使用谷歌浏览器进行验证。接着,文章详细讲解了如何使用WebElement的click()方法以及Action类提供的API来模拟鼠标的各种操作,如右击、双击、悬停和拖动。
6 2
|
2天前
|
Java 测试技术 持续交付
深入理解与应用Selenium WebDriver进行自动化测试
【4月更文挑战第25天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加速市场发布的关键步骤。Selenium WebDriver作为业界广泛采用的自动化测试工具之一,提供了一种灵活且高效的方式来模拟用户与Web应用程序交互。本文将探讨Selenium WebDriver的核心概念、架构以及实际应用中的技巧和最佳实践。通过深入分析其工作原理及常见问题解决方案,旨在帮助测试工程师提升测试效率,确保测试结果的准确性和可靠性。
|
3天前
|
API 开发者
免费邮箱API发送邮件测试调试的方法和步骤
本文介绍了使用免费邮箱API如aoksend、Mailgun、SMTP2GO发送邮件的测试调试步骤:选择合适的API,获取访问密钥,配置邮件参数,编写测试代码,调试和测试,查看发送日志,以及优化改进邮件发送功能,确保其稳定运行。
|
3天前
|
Web App开发 数据采集 Java
《手把手教你》系列技巧篇(三十)-java+ selenium自动化测试- Actions的相关操作下篇(详解教程)
【4月更文挑战第22天】本文介绍了在测试过程中可能会用到的两个功能:Actions类中的拖拽操作和划取字段操作。拖拽操作包括基本讲解、项目实战、代码设计和参考代码,涉及到鼠标按住元素并将其拖动到另一个元素上或指定位置。划取字段操作则介绍了如何在一段文字中随机选取一部分,包括项目实战、代码设计和参考代码。此外,文章还提到了滑动验证的实现,并提供了相关的代码示例。
31 2
|
4天前
|
前端开发 测试技术 C++
Python自动化测试面试:unittest、pytest与Selenium详解
【4月更文挑战第19天】本文聚焦Python自动化测试面试,重点讨论unittest、pytest和Selenium三大框架。unittest涉及断言、TestSuite和覆盖率报告;易错点包括测试代码冗余和异常处理。pytest涵盖fixtures、参数化测试和插件系统,要注意避免过度依赖unittest特性。Selenium的核心是WebDriver操作、等待策略和测试报告生成,强调智能等待和元素定位策略。掌握这些关键点将有助于提升面试表现。
18 0
|
7天前
|
Web App开发 JavaScript 前端开发
深入理解自动化测试框架Selenium的设计与实现
【4月更文挑战第20天】 在软件测试领域,自动化测试已成为提升测试效率和确保产品质量的关键手段。Selenium作为一款广泛使用的开源自动化测试框架,其设计精巧且功能强大,为Web应用提供了一种灵活、高效的测试解决方案。本文将深入探讨Selenium的核心架构与实现细节,解析其如何通过模拟用户操作来执行测试用例,以及它如何适应不断变化的Web技术标准。通过对Selenium内部机制的剖析,旨在帮助测试工程师更好地掌握该工具,并在测试实践中发挥其最大效能。
|
8天前
|
前端开发 JavaScript Java
《手把手教你》系列技巧篇(二十五)-java+ selenium自动化测试-FluentWait(详细教程)
【4月更文挑战第17天】其实今天介绍也讲解的也是一种等待的方法,有些童鞋或者小伙伴们会问宏哥,这也是一种等待方法,为什么不在上一篇文章中竹筒倒豆子一股脑的全部说完,反而又在这里单独写了一篇。那是因为这个比较重要,所以宏哥专门为她量身定制了一篇。FluentWait是Selenium中功能强大的一种等待方式,翻译成中文是流畅等待的意思。在介绍FluentWait之前,我们来讨论下为什么需要设置等待,我们前面介绍了隐式等待和显式等待。
32 3

热门文章

最新文章