selenium定位php,selenium之元素定位
原文:http://blog.sina.com.cn/s/blog_915cefbf0101sah4.html
id:findElement(by.id(“id”))
name:findElement(by.name(“name”))
class_name:findElement(by.className(“className”))
linkText:driver.findElement(By.linkText("Inbox"));--链接文本等于Inbox
partialLinkText:driver.findElement(By.partialLinkText("Inbox"));--链接文本包含Inbox
tagName:driver.findElement(By.tagName("div"));
Css
1)绝对路径 在DOM中的具体位置
findElement(by.cssSelector(“html body div form input”))
或findElement(by.cssSelector(“html>body>div>form>input”))
2)相对路径
driver.findElement(By.cssSelector("input"));第一个input元素。
driver.findElement(By.cssSelector("input.login")); html标签.class的属性值
3)相对Id选择器
driver.findElement(By.cssSelector("input#username"));html标签#id
driver.findElement(By.cssSelector("#username"));只是#id
4)属性
driver.findElement(By.cssSelector("input[name=username]"));使用name属性
driver.findElement(By.cssSelector("img[alt='Previous']"));使用alt属性
driver.findElements(By.cssSelector("img[alt]"));通过属性名称查找,页面所有img含 有alt属性的标签
driver.findElement(By.cssSelector("input[type='submit'][value='Login']"));联合多个属性查询
driver.findElements(By.cssSelector("img:not([alt])"));使用伪类
5)部分属性 (对于页面上有动态变化的属性的元素是非常有用的)
^= driver.findElement(By.cssSelector(Input[id ^ ='ctrl']));匹配到id头部 如ctrl_12
$= driver.findElement(By.cssSelector(Input[id $ ='ctrl']));匹配到id尾部 如a_ctrl
*= driver.findElement(By.cssSelector(Input[id * ='ctrl']));匹配到id中间如1_ctrl_12
高级CSS
1)查询子元素
WebElement userName = driver.findElement(By.cssSelector("form#loginForm > input"));
WebElement userName = driver.findEleme(By.cssSelector("form#loginForm :nth-child(2)"));
:first-child 定位表单第一个子元素
:last-child 定位表单最后一个子元素
:nth-child(2) 定位表单中第二个子元素
2)使用伪类
driver.findElement(By.cssSelector("input:focus")); 也可使用hover active
:enable input:enable 定位属性为enable的input元素
:disable input:disable 定位属性为disable的input元素
:checked input:checked 定位有多选框属性为checked的元素
3)查询兄弟元素
driver.findElement(By.cssSelector("#nv a + b")); 定位到id为nv的元素下的a元素的所有兄弟元素b(不包含a)
Xpath(可以向前向后查询DOM结构,css只能向前)
1)绝对路径
driver.findElement(By.xpath("html/body/div/div/form/input"));//如果发生结构改变则 找不到
2)相对路径
driver.findElement(By.xpath("//input"));//假设在DOM中的第一个
3)使用索引
driver.findElement(By.xpath("//input[2]"));//找第二个input元素
4)属性值
driver.findElement(By.xpath("//input[@id='username']"));//使用id属性匹配
driver.findElement(By.xpath("img[@alt='Previous']"));//使用alt属性
driver.findElement(By.xpath ("//input[@type='submit'][@value='Login']"));//联合多个属性
WebElement previousButton = driver.findElement (By.xpath("//input[@type='submit'and @value='Login']"));//使用and联合查询
WebElement previousButton = driver.findElement (By.xpath("//input[@type='submit'or @value='Login']"));//使用or选择查询
5)属性名称
List imagesWithAlt = driver.findElements (By.xpath ("img[@alt]"));//使用属 性名称 img中带有alt属性的元素
6)部分属性值
starts-with() driver.findElement(By.XPath(“input[starts-with(@id,’ctrl’)]”));
ends-with() driver.findElement(By.XPath(“input[ends-with(@id,’ctrl’)]”));
contains() starts-with() driver.findElement(By.XPath(“input[contains(@id,’ctrl’)]”));
7)使用值匹配任意元素属性值
driver.findElement(By.xpath("//input[@*='username']"));任意属性名称为username的元素
8)XPath轴 借住于元素与元素之间的关系定位
ancestor //td[text()=’Product1’]/ancestor::table 选择当前节点所有的父类元素
属性 名称 元素
descendant //table/descendant::td/input 选择当前节点所有子元素
following //td[text()=’Product1’]/following::tr 选择当前元素结束标签后的所有元素
following-sibling //td[text()=’Product1’]/following-sibling::td 当前元素后的兄弟元素
preceding //td[text()=’$150’]/preceding::tr 当前节点开始标签之前的所有节点
preceding-sibling //td[text()=’$150’]/preceding-sibling::td 当前借点之前的所有同级节点
定位单元格元素
方式:
table:定义表格
caption:表格标题
th:表头
tr:行
td:单元
thead:页眉
tbody:主题
tfoot:页脚
col:列的属性
colgroup:列的组
findElement将会查询整个DOM 最终返回第一个找到的匹配的元素
findElement可以查询子类,缩写为
driver.findElement(By.id("div1")).findElement(By.linkText("top"));
查找一个元素 查找这个元素下的子类top
当findElement找不到元素时。抛出NoSuchElementFoundException
findElements()方法返回所有匹配定位策略的WebElement的集合,我们可以使用java中List类来创建WebElements的实例,实现查找多个元素:
List links = driver.findElements(By.cssSelector("#nv a"));
selenium定位php,selenium之元素定位相关推荐
- Selenium常用的8大元素定位方法
1.元素定位方法的分类(调用方式): 直接调用型(推荐方式) driver.find_element_by_xxx(value) 使用By类型(需要导入By) from selenium.webdri ...
- Selenium学习(2) 元素定位
元素的定位是自动化测试的核心,想要操作一个元素,首先应该识别这个元素. webdriver提供一个一系列的元素定位方法,常用的有以下几种: id name class name link text p ...
- 《手把手教你》系列基础篇之3-python+ selenium自动化测试-驱动浏览器和元素定位大法(详细)
简介 上一篇中,只是简单地一带而过的说了一些驱动浏览器,这一篇继续说说驱动浏览器,然后再说一说元素定位的方法. 完成环境的安装并测试之后,我们对Selenium有了一定的了解了,接下来我们继续驱动浏览 ...
- Selenium自动化测试:8种元素定位+unittest框架设计
作者简介: 笔名,唐米.参与过汇丰银行,国家电网,中国电信等多个大型项目的研发和管理,擅长的技术领域为安全测试,性能测试,自动化框架搭建与维护,曾受南京航空航天大学邀请分享Linux.oracle等测 ...
- python android自动化元素定位_appium+python android元素定位
image ## text属性的方法 `driver.find_element_by_android_uiautomator(``'new UiSelector().text("Custom ...
- 自动化html定位视频教程,web自动化——元素定位
我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素. 元素定位的8种方法: id.name.class.tag.link.partail_link.x ...
- python怎么鼠标定位id_Selenium八种元素定位方法(Python)
前言: 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素.那么我们怎么来定位他们呢? 在学 ...
- python自动化元素定位_python自动化(元素定位)
1.id定位: find_element_by_id() 从上面定位到的搜索框属性中,有个id="kw"的属性,我们可以通过这个id定位到这个搜索框 代码: # coding = ...
- selenium自动化测试——常见的八种元素定位方法
selenium常用的八种元素定位方法 1.通过 id 定位:find_element_by_id() 2.通过 name 定位:find_element_by_name() 3.通过 tag 定位: ...
- css定位页面元素,页面元素定位-CSS元素基本定位
基本定位 """属性定位 一 """ # #通过id # driver.find_element_by_css_selector(" ...
最新文章
- python连接服务器失败_python-查询期间失去与MySQL服务器的连接
- 一篇文章告诉你:荣耀10 GT为什么叫全能旗舰
- 百度2016/2017秋招部分题目解析
- web-5. 超链接的使用
- jQuery-动画点击淡化消失
- Shallow and retained sizes
- xbox可以录视频声音吗_什么是Xbox Live Gold,它值得吗?
- load average多少是正常_从阿里大促中,我理出的CPU与Load异常排查思路
- iOS上传图片和视频(base64和file)
- 图像处理-提取指定颜色
- Python数据分析与机器学习项目实战
- C++死锁与哲学家就餐问题
- linux 隧道服务器,Linux下建立和使用隧道访问IPV6网络的方法 - 如何用隧道搭建ipv6...
- ART-PI调试记录----重力感应无线智能小车第二弹之OneNet+板载wifi控制电机转动
- 实现响应式布局有几种方法
- 真的不建议学Python,煞笔才学习Python,学Python难?两个小时足够搞定
- FMX和VCL混用时RegisterClass无法GetClass或FindClass的问题
- Java中append方法和add方法的区别
- PCB软件对比分析(AD、Pads、Allegro)
- java 时区 不正确_Java中的时区不匹配