selenium使用Xpath+JavaScript+jQuery的定位方法

我们先了解一下Xpath基础语法,如下:

符号 含义 举例
/ 从根节点选取。 /bookstore——选取根元素 bookstore。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 //book——选取所有 book 子元素,而不管它们在文档中的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性 //@lang——选取名为 lang 的所有属性。

xpath常用函数:

函数名 举例 用途
contains () //div[contains(@id,'widget')] 选择id属性中包含'widget'的div
text() //a[text()='hello world'] 选择文本值为'hello world'的节点
last() 选择最后一个
starts-with() //div[starts-with(@id,'common')] 选择id属性中’common’开头的div节点
not() 否定

一.Xpath的定位方法(复制路径的定位经常会经常不到的,建议还是手写吧)

1.通过绝对路径做定位(不推荐使用!)

WebElement ele = driver.findElement(By.xpath("html/body/div/form/input"));

2.第2种方法:通过元素索引定位

WebElement ele = driver.findElement(By.xpath("//input[4]"));
例:


selenium使用Xpath+JavaScript+jQuery的定位方法_第1张图片
image.png

3.使用xpath属性定位

1)By.xpath("//input[@id='kw']")


selenium使用Xpath+JavaScript+jQuery的定位方法_第2张图片
image.png

2)By.xpath("//input[@class="next_btn" and @value="next" ]")

selenium使用Xpath+JavaScript+jQuery的定位方法_第3张图片
image.png

3)By.xpath("//input[@type='radio' or @name='select[]']")


selenium使用Xpath+JavaScript+jQuery的定位方法_第4张图片
image.png

4.使用部分属性值匹配(最强大的方法)

WebElement ele = driver.findElement(By.xpath("//input[start-with(@id,'fuck')]"))——匹配id以fuck开头的元素,id='fuckyou'
WebElement ele = driver.findElement(By.xpath("//input[ends-with(@id,'fuck')]"))——匹配id以fuck结尾的元素,id='youfuck'
WebElement ele = driver.findElement(By.xpath("//input[contains(@id,'fuck')]"))——匹配id中含有fuck的元素,id='youfuckyou'

5.使用任意值来匹配属性及元素
WebElement ele = driver.findElement(By.xpath("//input[@*='fuck']"))——匹配所有input元素中含有属性的值为fuck的元素

6.使用XPATH轴来定位元素
还没怎么用过,就去借用他人的吧:插入# 笑笑唔莱的 使用xpath的轴(Axis)进行元素定位

注:元素定位总结(java版)
//By id
WebElement ele = driver.findElement(By.id());
//By Name
WebElement ele = driver.findElement(By.id());
//By className
WebElement ele = driver.findElement(By.className());
//By tabName
WebElement ele = driver.findElement(By.tagName());
//By linkText
WebElement ele = driver.findElement(By.linkText());
//By partialLinkText
WebElement ele = driver.findElement(By.partialLinkText());//通过部分文本定位连接
//By cssSelector
WebElement ele = driver.findElement(By.cssSelector());
//By XPATH
WebElement ele = driver.findElement(By.xpath());

二.selenium用javascript定位

由于selenium的内核引擎就是用JavaScript来驱动的,所以只要selenium自带的那些原始辣鸡方法出现定位不了的、点击不了的并发症一旦发作,就可以使用JavaScript大绝招,除了JavaScript,还有jQuery大绝招。
以下总结了5种js定位的方法:
1.通过id获取
document.getElementById(“id”)
2.通过name获取

document.getElementsByName(“Name”)
返回的是list
3.通过标签名选取元素
document.getElementsByTagName(“tag”)
4.通过CLASS类选取元素
document.getElementsByClassName(“class”)
兼容性:IE8及其以下版本的浏览器未实现getElementsByClassName方法
5.通过CSS选择器选取元素
document.querySelectorAll(“css selector")
兼容性:IE8及其以下版本的浏览器只支持CSS2标准的选择器语法
【举例代码如下】

js = 'document.getElementById("helloId").click();'

driver.execute_script(js)
js1 = 'document.getElementsByClassName("helloName")[0].value = "王大明";'   //整个HTML文档里第一个使用CSS样式类的class="helloName"属性,它的value属性的值设置为“王大明”

driver.execute_script(js1)

三.selenium用jquery定位

待楼主学习后补充

PS:如有疑问欢迎加微信一起探讨——VX:zheng520132

你可能感兴趣的:(selenium使用Xpath+JavaScript+jQuery的定位方法)