webdriver中元素查常⽤⽅法Selenium寻元素定位
id
findElement(by.id(“id”))
name
findElement(by.name(“name”))
class_name
findElement(by.className(“className”))
linkText
driver.findElement(By.linkText("Inbox"));
partialLinkText
driver.findElement(By.partialLinkText("Inbox"));
tagName
tagName(“html的类别信息如button”)
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")); 定位到a 再定位到和它相邻的b
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:⾏
cssclass属性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"));
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论