以登录页面密码框定位为例,讲解如何在selenium webdriver中通过by.xpath定位页面元素,快速获取元素位置并完成操作。
问题引入:
用Selenium IDE录制后的脚本如下:
driver.findElement(By.name("pass")).clear();
driver.findElement(By.name("pass")).sendKeys("密码");
driver.findElement(By.id("passwords")).clear();
driver.findElement(By.id("passwords")).sendKeys("123456");
回放的时候,页面非常难定位,需要很长时间才能找到密码框并输入密码,如果超时了找不到会报错。
解决方案:
既然有时候能回放成功,有时候又找不到页面元素,那肯定是这个元素定位不够准确,所以在查找的时候会消耗很长时间,那么通过xpah定位是否可以?
Xpath查找元素对象时有这样一种定位方式,即通过//定位,详情请参考:http://www.w3school.com.cn/xpath/xpath_syntax.asp
//
从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
比如这里密码框是输入框input,想要查找input的位置可以通过//input来实现,如果只是//input则可能会定位到多个input元素,此时需要通过键值对更精确的定位,语法是//input[@key=value],即://input[@name='pass']