当使用webdriver编写此脚本的时候,核心就是对元素的定位,通常的定位方式有By.id .name .select等等.
在编写页面源代码时,通常会事如下的一种编写格式,ID为固定值时我们可以直接使用By对象的id方法By.id("xxx");来对元素进行定位。
<input type="checkbox" value="true" id="addForm:_ID74:_ID75:0:_ID79:0: checkBox"/>
但是当ID随着页面的刷新,自动的变化取值,这样原来的那种方式就不能用了。
有两种办法:
一:xpath定位
xpath适用于那些网址或者TextLink经常改变的情况。当网址不经常改变,那么手工测试就足够了,或者使用简单的By.id();等方法就足够了。
By.xpath(input[x]);这样一种方式,通过定位input的排列顺序就可以完成对元素的定位.
二:编写代码
使用java代码来获取id的值,然后对id进行操作。
代码如下:
String [] checkBoxids=driver.getAllFields(); //获取所有的checkBox的ids
for(String checkboxid:checkboxids){
if(checkboxid.contains("addForm")){
driver.click(checkboxids);
}
}
这样也可以完成对自动变化的id的准确获取和操作。