6

我正在尝试使用以下表达式将一列元素从表结构中保存到列表中,我需要在该列表上执行单击操作以验证这些按钮。

代码 :

我有价值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]

进一步说我的操作失败了。

4

2 回答 2

1

实际上发生了什么意味着,返回类型

   driver.findElemnt(By.xpath("xpath"));

是 WebElement。当您将上述代码添加到其中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 locatorArrayList. 它会起作用的。

尝试这个

 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();
于 2013-02-01T04:34:01.027 回答
1

代替:

Naveen.findElement(By.xpath(Element1.get(start).toString())).click();

尝试:

Element1.get(start).click();
于 2016-01-19T07:41:39.300 回答