2013-01-31 9 views
5

Próbuję zapisać kolumnę elementów do listy ze struktury tabeli z poniższym wyrażeniem, w którym muszę wykonać operację kliknięcia, aby sprawdzić te przyciski.Jak zapisać listę WebElements z tabeli na liście podczas implementacji selenowego webdrivera?

Kod:

mam wartość dla 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); 
} 

Błąd:

gdy próbuję odzyskać elementy z listy pojawia się następujący komunikat:

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

dodatkowo co mój mówi moja praca jest wadliwa.

+0

u można wkleić pełny stacktrace..I myśleć, że coś nie tak z nim lub XPath nie może zlokalizować elementu –

Odpowiedz

1

Właściwie, co dzieje się na myśli, typ powrót

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

jest WebElement. Podczas dodawania powyższego kodu do ArrayList zostanie dodany obiekt WebElement. WebElement zawiera informacje na temat

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

Jeśli spróbujesz odzyskać element sieci, zwróci on wszystkie te rzeczy. Tak właśnie dzieje się w twoim przypadku i pojawia się błąd podczas próby kliknięcia.

Możesz po prostu dodać tylko Xpath locator w ArrayList. To będzie działać.

Spróbuj

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

Zamiast:

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

try:

Element1.get(start).click();