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的课程以前,我们先回顾一下软件 ...
随机推荐
- JDBC(3)ResultSet
ResultSet 在执行查询(select)时候使用 这是一个结果对象,该对象包含结果的方法但指针定位到一行时 调用Statement 对象的 executeQuery(sql)可以得到结果集 可以 ...
- 有gridview汇出word和excel
private void Export(GridView _gv, string filetype, string FileName) { if (filetype == &quo ...
- MyBatis动态sql语句归纳
1.删除数据(假删除)并修改时间 <!--根据id删除学生信息(多条)--> <update id="updateStuStatus" parameterType ...
- 装饰模式案列(OutputStream)
使用装饰模式进行装饰OutputStream 写入文件成功 装饰类继承OutputStream类 DecorOutputStream package com.wbg.springRedis.decor ...
- java序列化报错
Main.javat mainsr &java.util.Collections$UnmodifiableList�%1�� L listq ~xr ,java.util.Collection ...
- P1018 乘积最大(高精度加/乘)
P1018 乘积最大 一道dp题目.比较好像的dp题目. 然而他需要高精度计算. 所以,他从我开始学oi,到现在.一直是60分的状态. 今天正打算复习模板.也就有借口解决了这道题目. #include ...
- 移动端web开发技巧和常见问题
常见问题 1.移动端如何定义字体font-family 三大手机系统的字体: ios 系统 默认中文字体是Heiti SC 默认英文字体是Helvetica 默认数字字体是HelveticaNeue ...
- springmvc mybatis 整合
官网 http://www.fhadmin.org/D 集成安全权限框架shiro Shiro 是一个用 Java 语言实现的框架,通过一个简单易用的 API 提供身份验证和授权,更安全,更可靠E ...
- python函数名应用
函数名的应用 函数名 的应用分类: 函数就是一个特殊的变量(可以看成一个变量来用) *函数名对应函数的内存地址 *函数名可以做为容器类数据的元素 *函数名可以作为函数的参数 *函数名可以作为函数的返回 ...
- 面试乐融集团Python开发工程师有感
这是笔者第一次面试,,乐融集团位于朝阳区朝阳公园的乐融大厦.是下午两点的笔面试,笔者是一点半到的,然后在里面等了会,开始笔试 笔试题并不是太难,就是考的比较宽,因为笔者是校招,所以笔试题出来了数据结构 ...