2013-01-31 32 views
5

我試圖從一個表結構中保存一列元素到下面的表達式中,我需要在這個表達式上執行點擊操作來驗證這些按鈕。如何在執行硒webdriver時將表中的WebElements列表存儲到列表中?

代碼:

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

進一步其中我是說我的操作失敗。

+0

u能完全貼認爲stacktrace..I有一些錯誤的XPath或它無法找到該元素 –

回答

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元素,它將返回所有這些內容。這就是你的情況發生的情況,並且在點擊時出現錯誤。

您只需在ArrayList中單獨添加Xpath locator即可。它會工作。

試試這個

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(); 
1

相反的:

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

嘗試:

Element1.get(start).click(); 
相關問題