从学习至今,加了大大小小的学习交流群,自己在编写代码运行时,定位页面元素也是很头疼的问题,但也是最好解决的一个问题。
总结一点:遇见定位错误的,就使用xpath进行定位。
在学习webdriver中,定位页面元素的几种类型:
1.By.id()
2.By.name() 当当前页面元素较少时,可以使用此定位方式。
比如登陆页面的定位
driver.findElement(By.name("UserName")).sendKeys("admin");
driver.findElement(By.name("Password")).sendKeys("123456");
注:ID、name类型的定位方式是首要选择的方式,但如果页面上有几个相同的ID或name,就会取获取到的第一个元素值。
3.By.className()
4.CSS 暂时不添加,后续改进
5.By.Xpath() 平常用得最多的定位方式非他莫属了,简单粗暴。检查元素----ctrl+c---Ctrl+V,搞定。但很多时候用XPath定位也会出现问题。因为通过浏览器查找的xpath是绝对路径,一旦页面结构发生变化,该路径也随之失效。
绝对路径是以/开头,相对路径以//开头
下拉列表的一些定位方式:
driver.findElement(By.xpath("//*[@id='sidebar-collapse']/i")).click();如果页面元素的一些属性是动态发生变化的时候,这个时候可以用:
代码说明:需要删除新增的数据,但弹出的删除框的确定按钮id值是随机改变的,name值与其他按钮重复。这个时候可通过这个按钮的其他属性进行定位
driver.findElement(By.xpath("//button[@type='button' and @i-id='ok']"));
</pre><pre name="code" class="html"><pre name="code" class="html">6.By.linktext() 一般使用与页面元素挂钩的超文本链接。比如登陆按钮等