我正在尝试使用以下表达式将一列元素保存到表结构的列表中,我需要对其执行单击操作以验证这些按钮。
代码:
我有 Total_element = 37
的值。
for(int start=0; start <= Total_element; start++)
{
int startn=start+1;
System.out.println(start);
List <WebElement> Element1 = new ArrayList<WebElement>() ;
try{
Element1.add(Naveen.findElement(By.xpath(".//*[@id='data_grid']/tbody/tr["+startn+"]/td[2]/a/img")));
}catch(Throwable t){
System.out.println(t);
}
System.out.println(Element1.get(start));
System.out.println("The element" + start + "is :"+ Element1.get(start));
Naveen.findElement(By.xpath(Element1.get(start).toString())).click();
Naveen.findElement(By.xpath(".//*[@id='action']/a/span/div")).click();
System.out.println("The element" + start + "is :"+ Element1);
Thread.sleep(5000);
}
错误:
当我尝试从列表中检索元素时,我得到以下输出:
[[FirefoxDriver: Firefox on XP (586a8f1f-f784-4ae7-adf5-5f920dfad8e0)] -> xpath: .//*[@id='data_grid']/tbody/tr[1]/td [2]/a/img]
我进一步说我的操作失败了。
最佳答案
实际上发生了什么意思,
的返回类型 driver.findElemnt(By.xpath("xpath"));
是网络元素。当您将上述代码添加到 ArrayList
时,它会添加 WebElement。 WebElement 包含有关
使用的驱动程序
- FirefoxDriver
浏览器 session 值
- 586a8f1f-f784-4ae7-adf5-5f920dfad8e0
使用的定位器
- xpath: .//*[@id='data_grid']/tbody/tr[1]/td[2]/a/img]
如果您尝试检索 Web 元素,它将返回所有这些内容。这就是您的情况,您在尝试点击时遇到错误。
您可以在 ArrayList
中单独添加 Xpath 定位器
。它会起作用。
试试这个
ArrayList<String> Element1 = new ArrayList<String>();
Element1.add(".//*[@id='data_grid']/tbody/tr["+startn+"]/td[2]/a/img");
driver.findElement(By.xpath(Element1.get(`startn`))).click();
关于java - 实现 selenium webdriver 时如何将表中的 WebElements 列表存储到列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14634126/