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的课程以前,我们先回顾一下软件 ...
随机推荐
- 商品数量编辑按钮3D效果动画
.move-enter-active transition:all 0.4s linear transform:rotate(180deg).move-leave-active transition: ...
- MongoDB的角色作用(1)
MongoDB的角色作用: 经过大量血的教训,一个分片配置两个副本集时(一个是primary一个是secondary),如果primary挂掉,secondary是不会升级的,必须要加上一个不存储数据 ...
- 100个常用的linux命令(转)
来源:JavaRanger – javaranger.com http://www.javaranger.com/archives/907 1,echo “aa” > test.txt 和 ...
- vue根据:data-属性值绑定控制class变化
checked的初始值 小bug: v的checked有被修改,但没有被渲染到页面中. 试了子组件修改后的值传回父组件没用. 最后修改数据后调用this.$forceUpdate();即可重新渲染,样 ...
- CSS3-阴影参数基础
box-shadow 语法:text-shadow: x-shadow y-shadow distance color; 值 描述 x-shadow 必需.水平阴影的位置.允许负值. y-sha ...
- 大数据框架-Mapreduce过程
1.Shuffle [从mapTask到reduceTask: Mapper -> Partitioner ->Combiner -> Sort ->Reducer] mapp ...
- oracle导出sequences
将某个用户的全部sequence查询出来,并拼成创建语句: select 'create sequence '||sequence_name|| ' minvalue '||min_value|| ' ...
- 初学pygame
#Author:cljimport pygamepygame.display.set_mode((640,480),0,32)#设置窗口大小 返回的也是一个surface对象,resolution可以 ...
- Git 远程推送被拒绝的一种解决方案
今天在推送的时候发生了如下错误信息: error: 无法推送一些引用到 'https://gitee.com/von_w/demo_app.git'提示:更新被拒绝,因为您当前分支的最新提交落后于其对 ...
- js函数和window对象