您的位置:软件测试 > 开源软件测试 > 开源功能测试工具 > Selenium
在Selenium WebDriver中使用By.Xpath快速定位页面元素
作者:网络转载 发布时间:[ 2014/1/23 9:40:13 ] 推荐标签:Selenium WebDriver 页面

driver.findElement(By.xpath("//input[@name='pass']")).clear();

driver.findElement(By.xpath("//input[@name='pass']")).sendKeys("密码");

driver.findElement(By.xpath("//input[@id= passwords]")).clear();

driver.findElement(By.xpath("//input[@id= passwords]")).sendKeys("123456");

重新回放,时间仍然很长,看来通过一个元素键值对定位是不可靠的,那能不能通过多个元素呢?跟QTP中的高级描述性编程一样。那xpath的语法是什么,多个元素键值对怎么连接到一起呢?

 

首先查找name=pass的这个元素的另外一个元素键值对:class= textfild,用这两个定位一下试试看。

driver.findElement(By.xpath("//input[@name='pass'and@class=’ textfild’]")).clear();

driver.findElement(By.xpath("//input[@name='pass'and@class=’ textfild’]")).sendKeys("密码");

driver.findElement(By.xpath("//input[@id= passwordsand@class=’ textfild required’]")).clear();

driver.findElement(By.xpath("//input[@id=passwordsand@class=’textfild required’]")).sendKes(“12..”);

再回访,速度果然快了,很快便识别到了密码框的位置,并且进行了输入。

 

关于xpath查找元素还可以通过contains(一个字符串查找函数)来实现,语法是

//input[contains(@id,vakue)andcontains(@id,value)],此中的id和value是定位input元素的键值对

 

例如:

//input[contains(@class,'textfild') and contains(@name,'pass')]

 

那后经过整合和简化,4句的代码可简化为以下两句

driver.findElement(By.xpath("//input[contains(@class,'textfild')andcontains(@name,'pass')]")).clear();

driver.findElement(By.xpath("//input[@id='passwords'and@class='textfild required'and@type='password']")).sendKeys("123456");

 

为什么能简化为2行呢,看上面的截图,其实一上来的时候密码框里有“密码”两个字,当鼠标移入密码框获取焦点以后,“密码”文字消失,用户可以输入自己真正的密码。所以

driver.findElement(By.xpath("//input[@name='pass'and@class=’ textfild’]")).sendKeys("密码");

这句话是我们不需要的。因为当密码框获取焦点以后,“密码”文字消失了,所以下面的清空也没有必要存在了

driver.findElement(By.xpath("//input[@id= passwordsand@class=’ textfild required’]")).clear();

这样,代码简化了。

回放,一切ok。

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd