Selenium定位带输入框的下拉框

测试定位对象如下图,点击右侧向下按键,弹出下拉框列表,在输入框中输入字符可支持模糊查找。

Selenium定位带输入框的下拉框_第1张图片

刚开始我的测试思路是完全按照手工操作用例设计

1.点击向下按键

2.输入审核人名称

3.选中列表中匹配的审核人名称

l 首先借助selenium ide进行以上步骤的录制,结果发现ide压根就不会产生任何步骤,所以这种方法行不通。

l 然后使用火狐浏览器的firebug查看元素,分别获取了向下按键,输入框以及列表匹配元素的属性值,转换为自动化测试用例为:

 

1.driver.findElement(By.id("select2-drop-mask")).click();
2.driver.findElement(By.id("s2id_autogen3_search")).sendKeys("test12");
3.driver.findElement(By.xpath("//*[contains(text(),'test12')]")).click();

运行,总是提示找不到对象。

 

后面又分别换了定位元素的其他属性,以及定位方式,无果,仍然提示找不到对象。

l 最后实在没辙,使用firebug重新去看了下该下拉框的代码,发现其实这个下拉框的标签也是select。

 Selenium定位带输入框的下拉框_第2张图片

而之前定位过不带输入框的下拉框元素,如下图,这种下拉列表的标签也为select,可以使用new select成功定位,并且使用selenium ide也可以录制到相关步骤。

 

new Select(driver.findElement(By.id("id")).selectByVisibleText("已分配");

 

 Selenium定位带输入框的下拉框_第3张图片

既然都使用的是同样的select标签,我就换了下思路,省去点击向下按键,输入审核人名称的操作步骤,直接对该select标签元素进行操作。

 

new Select(driver.findElement(By.id("executorId")).selectByVisibleText("test12");

 

再次运行,竟然成功了。

 

总结:设计自动化用例时,思路不要被手工操作步骤所限制,如果按照手工操作步骤设计的用例无法成功定位元素时,可结合查看操作元素的标签或属性,再据此选择合适的自动化用例。

你可能感兴趣的:(Selenium)