2012-08-29 1 views
0

En sélénium WebDriver (Java),Comment pouvons-nous accéder à l'élément réel dans Selenium-webdriver (Java)?

Nous pouvons obtenir l'élément GWT
pour par exemple. WebElement obj = driver.findElement(By.id("gwt-debug-celltable"));

Par obj nous pouvons obtenir ce webelement de la table mais nous n'obtiendrons pas la cellule réelle. Donc, si vous voulez vérifier le nombre d'enregistrements dans la cellule avec Selenium-Webdriver. Ce que je dois faire?

Est-ce possible? Si oui, répondez dès que possible.

+2

Si vous voulez dire que vous voulez interroger l'objet java qui GWT a compilé dans le HTML que votre webdriver vient d'obtenir, la réponse est probablement non. C'est le genre de chose à laquelle les tests unitaires sont destinés. –

Répondre

1

Oui. Vous pouvez le faire en utilisant xpath, en quelque sorte:

List<WebElement> elements = 
    driver.findElements(By.xpath("//table[@id='gwt-debug-celltable']/tbody/tr")); 

Dans les éléments sera la liste des lignes. Je n'ai pas testé ce code. Mais il aime celui que nous utilisons dans notre projet.

+2

pourquoi ne pas simplement trouver les éléments par ID? xpath n'est pas la manière la plus préférée de trouver des choses à cause de la vitesse – Greg

+0

Parce que les balises tr n'ont pas d'identifiant dans gwt. Bien sûr, vous pouvez trouver l'élément table par id et faire une recherche récursive. Mais je pense que xpath plus élégant moyen de le faire. – ilalex

+0

Ou vous pouvez simplement ajouter des identifiants à vos balises tr, ou des classes, ce qui serait mieux la conception web de toute façon. –

0

Pour le WebTable j'ai refered le lien ci-dessous http://money.rediff.com/gainers/bsc/daily/groupa à partir du code ci-dessous vous pouvez obtenir toutes les valeurs de la WebTable

public class MaxFromTable { 
public static void main(String[] args) throws ParseException { 
WebDriver wd; 
System.setProperty("webdriver.chrome.driver","G://chromedriver.exe"); 
wd= new ChromeDriver(); 
wd.get("http://money.rediff.com/gainers/bsc/daily/groupa?"); 
String max; 
double m=0,r=0; 
    //No. of Columns 
List col = wd.findElements(By.xpath(".//[@id='leftcontainer']/table/thead/tr/th")); 
System.out.println("Total No of columns are : " +col.size()); 
//No.of rows 
     List rows = wd.findElements(By.xpath (".//*[@id='leftcontainer']/table/tbody/tr/td[1]")); 
     System.out.println("Total No of rows are : " + rows.size()); 
     for (int i =1;i<rows.size();i++) 
     {  
      max= wd.findElement(By.xpath("html/body/div[1]/div[5]/table/tbody/tr[" + (i+1)+ "]/td[4]")).getText(); 
      NumberFormat f =NumberFormat.getNumberInstance(); 
      Number num = f.parse(max); 
      max = num.toString(); 
      m = Double.parseDouble(max); 
      if(m>r) 
      {  
       r=m; 
      } 
     } 
     System.out.println("Maximum current price is : "+ r);   
    } 
    } 
Questions connexes