【测试开发】自动化测试selenium(二)——webdriver常用的API(一)

简介: 一个简单的脚本元素的定位id和name定位tag name 和 class name定位CSS定位XPath定位link text 定位Partial link text操作测试对象鼠标点击与键盘输入submit提交表单text 获取元素文本

一个简单的脚本

108.png


元素的定位


注意:不管用那种方式,必须保证页面上该属性的唯一性

webdriver 提供了一系列的对象定位方法,常用的有以下几种


id

name

class name

link text

partial link text

tag name

xpath

css selector

例如:一个百度的输入框,可以用这么用种方式去定位(以下是html代码)


<input id="kw" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">

脚本代码:

#coding=utf-8
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get("http://www.baidu.com")
#########百度输入框的定位方式##########
#通过id 方式定位
browser.find_element_by_id("kw").send_keys("selenium")
#通过name 方式定位
browser.find_element_by_name("wd").send_keys("selenium")
#通过tag name 方式定位
browser.find_element_by_tag_name("input").send_keys("selenium") 不能成功,因为input太多了不唯一。
#通过class name 方式定位
browser.find_element_by_class_name("s_ipt").send_keys("selenium")
#通过CSS 方式定位
browser.find_element_by_css_selector("#kw").send_keys("selenium")
#通过xphan 方式定位
browser.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")
############################################
browser.find_element_by_id("su").click()
time.sleep(3)
browser.quit()


id和name定位


id 和name 是我们最最常用的定位方式,因为大多数控件都有这两个属性,而且在对控件的id 和name 命名时一般使其有意义也会取不同的名字。通过这两个属性使我们找一个页面上的属性变得相当容易。


我们通过前端工具,例如chrome的F12,找到了百度输入框的属性信息,如下:


<input id="kw" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">


id=”kw”

通过find_element_by_id("kw") 函数就是捕获到百度输入框


name=”wd”

通过find_element_by_name("wd")函数同样也可以捕获百度输入框


tag name 和 class name定位


从上面的百度输入框的属性信息中,我们看到,不单单只有id 和name 两个属性,


比如class 和tag name(标签名)


input 就是一个标签的名字,可以通过find_element_by_tag_name("input") 函数来定位。


class="s_ipt",通过find_element_by_class_name("s_ipt")函数捕获百度输入框。


CSS定位


CSS(Cascading Style Sheets)是一种语言,它被用来描述HTML 和XML 文档的表现。


CSS 使用选择器来为页面元素绑定属性。这些选择器可以被selenium 用作另外的定位策略。


CSS 的比较灵活可以选择控件的任意属性,上面的例子中:

find_element_by_css_selector("#kw")


通过find_element_by_css_selector( )函数,选择取百度输入框的id 属性来定义


CSS的获取可以用chrome的F12开发者模式中Element-右键-copy-copy selector来获取


09.png

XPath定位


XPath 是一种在XML 文档中定位元素的语言。因为HTML 可以看做XML 的一种实现,所以selenium 用户可是使用这种强大语言在web 应用中定位元素。


XPath 扩展了上面id 和name 定位方式,提供了很多种可能性。


XPATH的获取可以用chrome的F12开发者模式中Element-右键-copy-copy xpath来获取


110.png


如:find_element_by_xpath("//*[@id='kw']")


link text 定位


有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过link


#coding=utf-8
from selenium import webdriver
browser = webdriver.Chrome()
browser.get("http://www.baidu.com")
browser.find_element_by_link_text("hao123").click()
browser.quit()


Partial link text


定位通过部分链接定位,这个有时候也会用到,我还没有想到很好的用处。拿上面的例子,我可以只用链接的一部分文字进行匹配:

#coding=utf-8
from selenium import webdriver
browser = webdriver.Chrome()
browser.get("http://www.baidu.com")
browser.find_element_by_partial_link_text("hao").click()
browser.quit()

操作测试对象


前面讲到了不少知识都是定位元素,定位只是第一步,定位之后需要对这个原素进行操作。鼠标点击呢还是键盘输入,这要取决于我们定位的是按钮还输入框。


一般来说,webdriver 中比较常用的操作对象的方法有下面几个:


  • click 点击对象
  • send_keys 在对象上模拟按键输入
  • clear 清除对象的内容,如果可以的话
  • submit 清除对象的内容,如果可以的话
  • text 用于获取元素的文本信息


鼠标点击与键盘输入


#coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(2)
driver.find_element_by_id("kw").send_keys("test")
time.sleep(2)
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("selenium")
time.sleep(2)
#通过submit() 来操作
driver.find_element_by_id("su").submit()
time.sleep(3)
driver.quit()


send_keys("xx") 用于在一个输入框里输入xx 内容。

click() 用于点击一个按钮

clear() 用于清除输入框的内容,比如百度输入框里默认有个“请输入关键字”的信息,再比如我们的登陆框一般默认会有“账号”“密码”这样的默认信息,clear 可以帮助我们清除这些信息。


submit提交表单


把“百度一下”的操作从click 换成submit 可以达到相同的效果:

driver.find_element_by_id("su").submit()


text 获取元素文本


text 用于获取元素的文本信息

#coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(2)
#id = cp 元素的文本信息
data=driver.find_element_by_id("cp").text
print data #打印信息
time.sleep(3)
driver.quit()

输出:

©2018 Baidu 使用百度前必读 意见反馈 京ICP证030173号


添加等待


添加休眠非常简单,我们需要引入time 包,就可以在脚本中自由的添加休眠时间了


import time
time.sleep(3)

智能等待


通过添加implicitly_wait() 方法就可以方便的实现智能等待;implicitly_wait(30)的用法应该比time.sleep() 更智能

后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。


# coding = utf-8
from selenium import webdriver
import time #调入time 函数
browser = webdriver.Chrome()
browser.get("http://www.baidu.com")
browser.implicitly_wait(30) #智能等待30秒
browser.find_element_by_id("kw").send_keys("selenium")
browser.find_element_by_id("su").click()
browser.quit()


两种等待的共同点:


等待够设置的时间,如果下一句执行的代码需要的元素没加载出来,都会抛出异常


打印信息


打印tile及url


#coding = utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
print driver.title # 把页面title 打印出来
print driver.current_url #打印url
driver.quit()

虽然没看到脚本的执行过程,但在执行结果里看到了


111.png

这说明页面正确被打开了


浏览器的操作


浏览器最大化


我们知道调用启动的浏览器不是全屏的,这样不会影响脚本的执行,但是有时候会影响我们“观看”脚本的执行。

#coding=utf-8
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get("http://www.baidu.com")
print "浏览器最大化"
browser.maximize_window() #将浏览器最大化显示
time.sleep(2)
browser.find_element_by_id("kw").send_keys("selenium")
browser.find_element_by_id("su").click()
time.sleep(3)
browser.quit()



相关文章
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
471 11
|
3月前
|
敏捷开发 测试技术 API
测试金字塔:构建高效自动化测试策略的基石
测试金字塔:构建高效自动化测试策略的基石
319 116
|
3月前
|
测试技术 API 数据库
测试金字塔:构建高效自动化测试策略的基石
测试金字塔:构建高效自动化测试策略的基石
341 114
|
4月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
574 11
|
9月前
|
jenkins 测试技术 Shell
利用Apipost轻松实现用户充值系统的API自动化测试
API在现代软件开发中扮演着连接不同系统与模块的关键角色,其测试的重要性日益凸显。传统API测试面临效率低、覆盖率不足及难以融入自动化工作流等问题。Apipost提供了一站式API自动化测试解决方案,支持零代码拖拽编排、全场景覆盖,并可无缝集成CI/CD流程。通过可视化界面,研发与测试人员可基于同一数据源协作,大幅提升效率。同时,Apipost支持动态数据提取、性能压测等功能,满足复杂测试需求。文档还以用户充值系统为例,详细介绍了从创建测试用例到生成报告的全流程,帮助用户快速上手并提升测试质量。
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
376 31
Selenium IDE:Web自动化测试的得力助手
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
781 17
Selenium:强大的 Web 自动化测试工具
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
|
监控 数据管理 测试技术
API接口自动化测试深度解析与最佳实践指南
本文详细介绍了API接口自动化测试的重要性、核心概念及实施步骤,强调了从明确测试目标、选择合适工具、编写高质量测试用例到构建稳定测试环境、执行自动化测试、分析测试结果、回归测试及集成CI/CD流程的全过程,旨在为开发者提供一套全面的技术指南,确保API的高质量与稳定性。
|
12月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。