关于隐藏元素和多个元素的定位

一. 关于隐藏元素
   相信大家都碰到过定位一个当前hidden的元素。看到了很多方法,先总结一下,比较通用的肯定还是用JavascriptExecutor接口的方法了:
JavascriptExecutor js = (JavascriptExecutor) driver; 
   String myjs="document.getElementById('ctl00_c_NewMenu|1').click();";
   js.executeScript(myjs);
或者有值输入的可以这样
JavascriptExecutor js = (JavascriptExecutor) driver;
                        js.executeScript("arguments[0].value='2014-01-10';", driver
                                        .findElement(By.id("Search_EndTime")));
   具体JS脚本的写法也有很多了,可以多学习下JS的语法,句法等。在此因为主要是想写关于selenium的博客,暂且不多赘述了。

二. 关于多个元素
   关于多个元素,最常见的,可以利用Xpath定位器定位其所在节点的父节点,祖父节点或利用子节点定位,具体关于Xpath,我想分享下Selenium中文论坛的教程,地址如下:
1.
http://www.seleniumcn.cn/read.php?tid=7973
2.
http://www.seleniumcn.cn/read.php?tid=7982

   在这里我只讲一个最简单的例子好了,就是我们在定位多个元素,但多个元素有同一属性的时候,我们可以用一些XPath表达式去定位元素。例如,多个输入框:先用driver.findElements方法先把元素装到List里面取,然后,我们用//div[input][label][input]且满足//input[@type='text']的元素值,这样我们就可以把页面所有满足此条件的元素得到了。
List<WebElement> InputFields=driver.findElements(By.xpath("//div[input][label][input]//input[@type='text']"));
   然后我们给这些元素sendKeys就方便多了,
String [][] tab2=CMD1_getExcel_Step3(cmd,method);/ /The method to get array list tab2
for(int i=0;i<tab2.length;i++)
{
for(int j=0;j<tab2[j].length;j++)
{
        InputFields.get(i).sendKeys(tab2[i][j]);
}
}

猜你喜欢

转载自frances657132.iteye.com/blog/2033725