如何在实现selenium webdriver时将WebElements列表从表中存储到列表中?

use*_*364 6 java list ui-automation selenium-webdriver

我试图将一列元素保存到一个表结构的列表中,下面的表达式我需要执行一个单击操作来验证这些按钮.

代码:

我有价值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);  
}
Run Code Online (Sandbox Code Playgroud)

错误:

当我尝试从列表中检索元素时,我得到以下输出:

[[FirefoxDriver: firefox on XP (586a8f1f-f784-4ae7-adf5-5f920dfad8e0)] -> xpath: .//*[@id='data_grid']/tbody/tr[1]/td[2]/a/img]

我说我的操作失败了.

Man*_*dan 1

实际上发生的事情意味着,返回类型

   driver.findElemnt(By.xpath("xpath"));
Run Code Online (Sandbox Code Playgroud)

是 Web 元素。当您将上述代码添加到 时,ArrayList它将添加 WebElement。WebElement 包含有关

Driver Used- FirefoxDriver
Browser session value- 586a8f1f-f784-4ae7-adf5-5f920dfad8e0
locator used- xpath:.//*[@id='data_grid']/tbody/tr[1]/td[2]/a/img]

如果您尝试检索 Web 元素,它将返回所有这些内容。这就是您的情况所发生的情况,并且您在尝试单击时遇到错误。

您只需将Xpath locator单独添加到ArrayList. 它会起作用的。

尝试这个

 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();
Run Code Online (Sandbox Code Playgroud)