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的课程以前,我们先回顾一下软件 ...
随机推荐
- Node.js_06 express
一.初探 1 express是什么 Express.js 框架是目前最流行的node.js后端框架之一, 相当于jQuery和js之间的关系; Express 不对 Node.js 已有的特性进行二次 ...
- tomcat解析
tomat是一个servlet容器,来处理http请求.在平时的使用中我们都会再浏览器中输入http地址来访问服务资源,比如格式http://host[":"port][abs_p ...
- ios reloadsection 位置偏移
这个问题再iOS11之前不会发生,目前仅在iOS11机型上会出现. 解决这个问题很简单,只需要你在初始化tableview的时候,把estimate的高度都设为0即可. self.tableView. ...
- 通过非聚集索引让select count(*) from 的查询速度提高几十倍、甚至千倍
通过非聚集索引,可以显著提升count(*)查询的性能. 有的人可能会说,这个count(*)能用上索引吗,这个count(*)应该是通过表扫描来一个一个的统计,索引有用吗? 不错,一般的查询,如果用 ...
- 如何编写及运行JS
JS也是一种脚本语言,他可以有两种方式在HTML页面进行引入,一种是外联,一种是内部. 外联JS的写法为: <script src="相对路径"></ ...
- CentOS中的 yum upgrade 和 yum update 的区别
通过 man yum 的帮助信息了解 yum update 和 yum upgrade: update If run without any packages, update will update ...
- Apache常规配置说明
Apache配置文件:conf/httpd.conf.(注意:表示路径时使用‘/’而不使用‘\’,注释使用‘#’) 1. ServerRoot:服务器根目录,也就是Apache的安装目录,其他的目录配 ...
- tcp总结与简单实现
一.TCP简介 1. TCP介绍 1)TCP协议,传输控制协议(Transmission Control Protocol,缩写为 TCP)是一种面向连接的.可靠的.基于字节流的传输层通信协议 2)t ...
- 自定义注解实现(spring aop)
1.基本概念 1.1 aop 即面向切面编程,优点是耦合性低,能使业务处理和切面处理分开开发,扩展和修改方面,当引入了注解方式时,使用起来更加方便. 1.2 应用场景 打日志.分析代码执行时间.权限控 ...
- [转]MySQL日期与时间戳常用函数
本文原文地址:https://www.cnblogs.com/jhy-ocean/p/5560857.html 平时比较常用的时间.字符串.时间戳之间的互相转换,虽然常用但是几乎每次使用时候都喜欢去搜 ...