Selenium3详解(基本操作,定位方法)
元素定位:对于对于 Web 自动化测试来说,就是操作页面上的各种元素,在操作元素之间需要先找到元素,换句话说就是定位元素
Selenium常见的定位元素的8种方法:Id,Name,Classname,LinkText,PartialLinkText,CSSSelector,Xpath。
重点是xpath定位元素和Tagname定位元素,其他 的自己百度一下

Tagname定位元素
agname,通过标签名称定位
例如:用户名输入框的标签为input
driver.find_element_by_tag_name('input').send_keys('1763798976') 但是用户名和密码输入框的标签都是input,
我们就需要用到find_elements,而不是find_element方法
1.它先返回一个list,表示这个页面有多少个input标签
2.你再根据list的索引去操作这个元素
注意:其它的元素定位方法也是同样的道理,如果定位到多个,用find_elements
input=driver.find_elements_by_tag_name('input') #返回一个list,因为用户名和密码都是input标签
input[1].send_keys('1763') #list[1] 表示在第二个标签输入 Xpath定位元素
xpath:path就是路径,类似文件夹Desktop/classnotes/
绝对路径定位:copy xpath (借助谷歌浏览器)
缺点:当页面元素父级元素发生改变,页面元素的位置发生改变时,都需要修改
相对路径定位:以 //开头+标签名 (自己写xpath)
优点:长度和标签开始的位置并不受限制,稳定且万能
看看一些符号的定义
// :表示相对路径 (所以xpath的写法是:以//开头+标签名 )
/.. :表示找上级
/ :表示找下级
@:标签属性定位
() :text的值
* :标签名任意
属性定位:
比如上面"用户名"的文本框的id为:username
写相对路径xpath://input[@id="username"] //input是标签名 @id="username"是标签属性的名称
或者标签名任意://*[@id="username"]
文本定位:
比如登录按钮的text文本为:登录
写相对路径xpath://button[text()="登录"] //button是标签名,text()="登录"是文本内容
或者标签名任意://*[text()="登录"]
模糊查询:starts-with
//+标签名[starts-with(@什么属性,'以什么开始')]
//input[starts-with(@type,'pass')]
模糊查询: contains():
表示该元素的属性的值,包含了什么东西
//+标签名[contains(@什么属性,'包含了什么值')]
//input[contains(@type,'ord')] //input是标签名,@type是属性,ord 是包含的值

'''特殊的元素定位:svg,frame'''
'''SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
需要xpath里面的name()方法:*[name()='svg']'''
'''frame:
frame标签有frameset、frame、iframe三种,
frameset跟其他普通标签没有区别,不会影响到正常的定位,
而frame与iframe需要切换进去才能定位到其中的元素
看例子:'''
driver=webdriver.Chrome()
driver.get("http://www.kuaidi100.com/")
driver.find_element_by_xpath('//*[@id="uDeskTarget"]').click() #点击客服聊天按钮
#切换至frame
driver.switch_to_frame(driver.find_element_by_xpath('udesk_iframe')) #用frame的id来切换
#driver.switch_to.frame(driver.find_element_by_xpath('//*[@id="udesk_iframe"]')) #如果frame没有id和name,用它的xpath来切换
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.126.com")
driver.switch_to.frame('x-URS-iframe')
driver.find_element_by_name("email").clear()
driver.find_element_by_name("email").send_keys("username")
driver.find_element_by_name("password").clear()
driver.find_element_by_name("password").send_keys("password")
driver.find_element_by_id("dologin").click()
driver.switch_to.default_content()
driver.quit()
switch_to.frame() 默认可以直接取表单的id 或name属性。如果iframe没有可用的id和name属性,则可以通过下面的方式进行定位。
除此之外,在进入多级表单的情况下,还可以通过switch_to.default_content()跳回最外层的页面。
Selenium3详解(基本操作,定位方法)的更多相关文章
- Selenium 详解xpath定位
xpath定位在业界被戏称为元素定位的"屠龙宝刀",宝刀在手,武林我有.现在我们就来详解xpath定位方法. 一.xpath通过元素属性定位 xpath可以通过元素的属性来定位,如 ...
- 【初级】linux pwd 命令详解及使用方法实战
pwd:查看当前工作目录 前言: Linux中用 pwd 命令来查看”当前工作目录“的完整路径,就是经常提及的所在目录,多用在生产环境多级目录中查看当前所在路径,使用此命令能给运维人员/操作人员带来很 ...
- 【初级】linux rm 命令详解及使用方法实战
rm:删除命令 前言: windows中的删除命令大家都不陌生,linux中的删除命令和windows中有一个共同特点,那就是危险,前两篇linux mkdir 命令详解及使用方法实战[初级]中我们就 ...
- 【初级】linux mkdir 命令详解及使用方法实战
mkdir命令详解及使用方法实战 名称 MKDIR 是 make directories 的缩写 使用方法 mkdir [选项(如-p)] ...目录名称(及子目录注意用分隔符隔开)... 如使 ...
- ThinkPHP函数详解:session方法
ThinkPHP函数详解:session方法 Session方法用于Session 设置.获取.删除和管理操作. Session 用于Session 设置.获取.删除和管理操作 用法 sessi ...
- PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等
页面导航: 首页 → 网络编程 → PHP编程 → php技巧 → 正文内容 PHP安全 PHP开发中常见的安全问题详解和解决方法(如Sql注入.CSRF.Xss.CC等) 作者: 字体:[增加 减小 ...
- 转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权
原文地址:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法.shiro认证与shiro授权 以下是部分内容,具体见原文. shiro介绍 什么是shiro shiro是Apache ...
- tomcat常用配置详解和优化方法
tomcat常用配置详解和优化方法 参考: http://blog.csdn.net/zj52hm/article/details/51980194 http://blog.csdn.net/wuli ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
随机推荐
- OC Swift中检查代码行数
1 打开终端 cd 进去当前项目 2 总行数查看命令 find . -name "*.m" -or -name "*.h" | xargs wc -l ...
- Bootstrap补充
一.一个小知识点 1.截取长屏的操作 2.设置默认格式 3.md,sm, xs 4.空格和没有空格的选择器 二.响应式介绍 - 响应式布局是什么? 同一个网页在不同的终端上呈现不同的布局等 - 响应式 ...
- 用flask实现的分页
一.flask实现的分页组件 from urllib.parse import urlencode,quote,unquote class Pagination(object): "&quo ...
- LeetCode(119):杨辉三角 II
Easy! 题目描述: 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] 进阶: ...
- LeetCode(79): 单词搜索
Medium! 题目描述: 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格.同一个单元 ...
- laravel 5 优化
性能一直是 Laravel 框架为人诟病的一个点,所以调优 Laravel 程序算是一个必学的技能. 接下来分享一些开发的最佳实践,还有调优技巧,大家有别的建议也欢迎留言讨论. 这里是简单的列表: 配 ...
- git 注意事项
1,用户凭证 github的两种url地址 http ssh :由于Git和Github交互操作可能会很频繁,那么一定少了用户授权的操作,为了防止每次操作重复输入用户名和密码,Git提供了两 ...
- Repair the Wall
问题 : Repair the Wall 时间限制: 1 Sec 内存限制: 128 MB 题目描述 Long time ago , Kitty lived in a small village. ...
- Appium 九宫格 手势解锁
分析九宫格定位 整个九宫格是一个 view self.driver.find_element_by_id("com.elc:id/gesturepwd_create_lockview&q ...
- java中的相对目录问题
在java开发过程中,常常需要使用本地文件内容文件.在调试他人代码的过程中,可能不经意间改变了源代码的根目录(顶级目录),从而导致“java io filenotfoundexception ”.解决 ...

