Selenium自动化测试第一天(下)
如有任何学习问题,可以添加作者微信:lockingfree
目录
万能的XPath
XPath即XML路径语言,支持从xml或html中查找元素节点,使用XPath完全可以替代其他定位放式,如:
find_element_by_xpath('//*[@id=""]')
等同于find_element_by_id("")
find_element_by_xpath('//*[@name=""]')
等同于find_element_by_name("")
find_element_by_xpath('//*[@class=""]')
等同于find_element_by_class_name("")
find_element_by_xpath('//标签名')
等同于find_element_by_tag_name("标签名")
find_element_by_xpath('//a[contains(text(),"")]')
等同于find_element_by_link_text("")
find_element_by_xpath('//*[@id=""]')
等同于find_element_by_partial_link_text("")
需要通过一组元素或分层定位的也可以直接使用XPath直接定位到
从浏览器复制出的XPath有可能不靠谱,所以我们要学会XPath的语法
路径
- /绝对路径: /html/body/div
- //相对路径: //div/form //*/form 路径中可以使用 *代表任意标签
- .当前路径: //div/form/. 等同于//div/form
- ..上级路径: //div/form/.. 等同于//div
索引
- 从1开始: /html/body/div[2] //div[1]/form
属性
- @属性名:定位包含特定属性名的标签, 如
//input[@class]
- @属性名="属性值":定位特定属性名=属性值的标签,如
//input[@id="kw"]
- @*="属性值":定位任意属性名=属性值的标签, 如
//input[@*='kw']
- 多属性结合定位:
//input[@id="kw" and @class='kw-class']
或//input[@id="kw"][@class="kw-class"]
(and处也支持使用or,表示或)
函数
- text():标签中的文本值,如
//a[text()="百度首页走起~"]
- contains(): 包含,如
//a[contains(text(), "百度首页")]
- starts-with(): 以**开头,如
//a[starts-with(text(), "百度"]
- last(): 最后一个, 如
//div[last()]
轴
- parent: 父标签
- child:子标签
- following: 后面的,如:
//*[text()="用户名"]/following::input[1] # 紧邻文本为用户名的输入框
- preceding:前面的
示例:
from selenium import webdriver
browser = webdriver.Chrome()
browser.maximize_window()
browser.get("http://115.28.108.130/control.html")
browser.implicitly_wait(10)
div = browser.find_element_by_xpath("/html/body/div/form/div[2]")
print(div.text)
练习:
打开http://115.28.108.130/control.html,点击表格中王五(顺序不固定)后面的查看链接
弹出框处理
allert警告框
alert = driver.switch_to.alert()
alert.accept() # 确认 或alert.dismiss() 关闭
confirm确认框
confirm = driver.switch_to.alert()
confirm.accept() # 确认 或alert.dismiss() 取消
propmt提示框
propmt = driver.switch_to.alert()
propmt.send_keys() 输入
propmt.accept() # 确认 或alert.dismiss() 关闭
练习:
打开网址,分别点击下方的alert, confirm,propmt按钮,并处理对话框
模态框
直接定位即可
练习:
打开百度首页,点击登录,点击用户名密码登录(可直接定位点击)
授权对话框
在打开的url中使用用户名和密码打开,格式如下
http://use:password@www.***.com
框架页面处理
- iframe: 嵌入在网页body中的单独框架(框架拥有一套独立的html代码)
- frameset: 框架组,包含多个frame
- frame:每个frame引用一个独立的网页
因为frame/iframe框架是一套独立的网页,因此frame/iframe中的元素不能直接定位到
- driver.switch_to.frame(name/id/index/Element)
- name: frame/iframe的name属性
- id: frame/iframe的id属性
- index: 如:0,第一个frame
- Element: 定位到的frame/iframe,再切换到指定frame
- driver.switch_to.parent_frame(): 切换到父级frame, 子frame之间不能相互切换
- driver.switch_to.default_content(): 跳出所有frame
示例:
from selenium import webdriver
from time import sleep
browser = webdriver.Chrome()
browser.maximize_window()
browser.get("http://www.w3school.com.cn/tiy/t.asp?f=html_frame_mix")
browser.switch_to.frame("i") #总的frame
browser.switch_to.frame(0)
print(browser.find_element_by_tag_name("h3").text)
browser.switch_to.parent_frame()
browser.switch_to.frame(1)
print(browser.find_element_by_tag_name("h3").text)
browser.switch_to.parent_frame()
browser.switch_to.frame(2)
print(browser.find_element_by_tag_name("h3").text)
browser.switch_to.default_content()
练习:
打开http://mail.qq.com并使用用户名密码登录qq邮箱
此为北京龙腾育才 Python高级自动化(Selenium部分)授课笔记
课程介绍
想要参加现场(北京)/网络课程的可以联系作者微信:lockingfree
- 高效学习,快速掌握Python自动化所有领域技能
- 同步快速解决各种问题
- 配套实战项目练习
Selenium自动化测试第一天(下)的更多相关文章
- Selenium自动化测试第二天(下)
如有任何学习问题,可以添加作者微信:lockingfree 目录 Selenium自动化测试基础 Selenium自动化测试第一天(上) Selenium自动化测试第一天(下) Selenium自动化 ...
- Selenium自动化测试第一天(上)
如有任何学习问题,可以添加作者微信:lockingfree 目录 Selenium自动化测试基础 Selenium自动化测试第一天(上) Selenium自动化测试第一天(下) Selenium自动化 ...
- Selenium自动化测试第二天(上)
如有任何学习问题,可以添加作者微信:lockingfree 目录 Selenium自动化测试基础 Selenium自动化测试第一天(上) Selenium自动化测试第一天(下) Selenium自动化 ...
- 《手把手教你》系列基础篇之(二)-java+ selenium自动化测试-环境搭建(下)基于Maven(详细教程)
1.简介 Apache Maven是一个软件项目管理和综合工具.基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件.由于现在企业和公司中Java的大部分项目都是基 ...
- 《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)
1.简介 在实际自动化测试过程中,我们也避免不了会遇到下拉选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助. 2.select 下拉框 2.1Select ...
- 《Selenium自动化测试实战》新书上市,有需要朋友们可以了解下,欢迎大家多提宝贵意见
京东:https://item.jd.com/13123910.html当当:http://product.dangdang.com/29204520.html 1. 本书基于 Python 3.8 ...
- Python网络数据采集7-单元测试与Selenium自动化测试
Python网络数据采集7-单元测试与Selenium自动化测试 单元测试 Python中使用内置库unittest可完成单元测试.只要继承unittest.TestCase类,就可以实现下面的功能. ...
- Selenium自动化测试框架入门整理
关注嘉为科技,获取运维新知 本文主要针对Selenium自动化测试框架入门整理,只涉及总体功能及框架要点介绍说明,以及使用前提技术基础要求整理说明.作为开发人员.测试人员入门参考. 本文参考:Se ...
- Selenium自动化测试Python一:Selenium入门
Selenium入门 欢迎阅读Selenium入门讲义,本讲义将会重点介绍Selenium的入门知识以及Selenium的前置知识. 自动化测试的基础 在Selenium的课程以前,我们先回顾一下软件 ...
随机推荐
- JavaScript:回调模式(Callback Pattern) (转载)
JavaScript:回调模式(Callback Pattern) 函数就是对象,所以他们可以作为一个参数传递给其它函数: 当你将introduceBugs()作为一个参数传递给writeCode() ...
- .net 基础(一)
方法 只需要考虑2个 东西 1. 方法的参数 2.方法的返回值 当参数的个数不确定的时候,可以采用可变参数params. params 数组的 个数,不确定.当传入的 参数为空的时候,可变参数的数组 ...
- NOIP2018(更新中)
\(Day_1T_1\) 铺设道路 (Link) 现在你有一个序列,每一个\(i\)有一个深度\(Deep[i]\),现在你可以选择任意的区间,将整个区间的\(Deep\)都减少\(1\).但前提是这 ...
- 锐捷交换机实验案例:vlan间互访的配置与验证
组网需求: 1.如下图所示,某用户内网被划分为VLAN 10.VLAN 20.VLAN 30,以实现相互间的2 层隔离: 2.3 个VLAN 对应的IP 子网分别为192.168.10.0/24 .1 ...
- Etherlab debian安装记录
debian wheezy 7.11(虚拟机安装选择桥接网卡) #set ustc source #apt-get install sudo #nano /etc/sudoers;add userNa ...
- careercup-扩展性和存储限制10.6
题目 你有10亿个url,每个url对应一个非常大的网页.你怎么检测重复的网页? 解答 网页大,数量多,要把它们载入内存是不现实的. 因此我们需要一个更简短的方式来表示这些网页.而hash表正是干这事 ...
- ElasticSearch搜索服务技术
ElasticSearch 基于的lucene开发的搜索服务技术;天生支持分布式; Es的结构 gatway:存储层,所有的数据可以存储在本地(多个es节点形成分布式存储),hdfs输出位置,共享文件 ...
- windows搭建本地IIS服务器+php安装+移动设备内网访问服务器
启动IIS服务 1. 打开 “控制面板” => "程序" => "启用或关闭Window功能": 2. 接着勾选相应设置: 3. 继续勾选对应目录下 ...
- ComboBox可搜索下拉框的使用注意事项,简单记录以及我遇到的一些奇怪的bug
前几天做一个react的项目的时候需要用一个可搜索的下拉框ComboBox,上代码: <ComboBox // className={comboxClassName} items={storeA ...
- vue 新属性学习
1, $listeners 父级元素 <base-input v-on:focus.native="onFocus"></base-input> 子级元素 ...