2014-09-29 61 views
-2

HTML代码如何找到TD元素存在或不 - 硒的webdriver用java

<table class="adminlist" width="100%" cellspacing="0" cellpadding="0" border="0"> 
<tbody> 
<tr data-bind="if: RowCounts>0, attr: {StatusId: Id, DescName:Name}" statusid="2" descname="Abandoned"></tr> 
<tr data-bind="if: RowCounts>0, attr: {StatusId: Id, DescName:Name}" statusid="1" descname="Active"> 
<td style="width: 5%;"> 
<input type="checkbox" data-bind="attr: { accesskey: Id }" accesskey="1"> 
</td> 
<td class="country"> 
<span data-bind="text:Name">Active</span> 
(
<span data-bind="text:RowCounts">20</span> 
) 
</td> 
</tr> 

,我们怎样才能找到“TD”元素存在或不与上表中,根据上述第一行不要有一个TD元素但第二行其具有T​​D元素

Java代码

Hashtable<String, Integer> renewalStatus = new Hashtable<String, Integer>(); 
     List<WebElement> activeAssetStatus = driver.findElements(By 
       .xpath("//*[@id='divPatPortfolioStatusCount']/table/tbody/tr")); 

     for (int i = 1; i <= activeAssetStatus.size(); i++) { 
      List<WebElement> statusValue = activeAssetStatus.get(i) 
        .findElements(By.tagName("td")); 

      if (statusValue.size() > 0) { 
       WebElement al = driver 
         .findElement(By 
           .xpath("//*[@id='divPatPortfolioStatusCount']/table/tbody/tr[" 
             + i + "]/td[2]")); 

       String mainText = al.getText(); 
       final Pattern p = Pattern.compile("(.*?)\\s*\\((.*?)\\)"); 
       final Matcher m = p.matcher(mainText); 
       m.find(); 
       String name = m.group(1); 
       String count = m.group(2); 
       renewalStatus.put(name, Integer.parseInt(count)); 
      } 
     } 
} 

上面的代码不能够收集和TD值存储在哈希表 其促领袖“NoSuchElementException异常” 因为如果条件里面i值1,因此其产生这种例外,我怎么能收取相应的行与TD值

回答

0
List <WebElement> allTrElements = driver.findElements(By.xpath("//table[@class='adminlist']/tbody/tr")); 

for(int i= 0;i<allTrElements.size();i++){ 
    List<WebElement> allTdElements = allTrElements.get(i).findElements(By.tagName("td")); 
    if(allTdElements.size() > 0){ 
     // if confirms <tr> contains <td> 
    } 
} 
+0

@shekhar请里面找到我的Java代码我值的循环变成1 – Prabu 2014-09-29 10:27:55

0
WebDriver mainDriver = new ChromeDriver(); 

//get the table element 
WebElement eleTable = mainDriver.findElement(By.tagName("table"); 

//get the list of row elements of table 
List<WebElement>tableRowList = eleTable.findElements(By.tagName("tr")); 

for(int i = 0 ; i < tableRowList.size(); i++) { 
    //take individual rows 
    WebElement rowElement = tableRowList.get(i); 

    //get the list of td elements 
    List<WebElement> dataElement = rowElement.findElements(By.tagName("td")); 

    if(dataElement.size() > 0) { 
     //if size > 0, there are td elements in it. 
    } 
} 

+0

请找到我的java代码 – Prabu 2014-09-29 10:35:32

+0

你能告诉我你想从td元素中获取什么吗? – Shastry 2014-09-29 11:26:50

+0

:在该td(Active,20)内的span值,刮掉该表中的所有行查找并收集所有td值 – Prabu 2014-09-29 11:37:26