2017-07-19 22 views
1

我自动化的UI具有使用div标签的表格。它为表的所有迭代显示相同的文本。请找到html代码和我的脚本。请帮忙。无法从硒中获取div表格中的行文本

<div class="panelbody"/> 
 
<div class="hdrInv" 
 
<div class="STable"> 
 
<div class="sitezones"> 
 
<div class="row"> 
 
<div class="col"> 
 
    <b> Text1</b> 
 
</div> 
 
<div class="hdrInv" 
 
<div class="STable"> 
 
<div class="sitezones"> 
 
<div class="row"> 
 
<div class="col"> 
 
    <b> Text2</b> 
 
</div> 
 
<div class="hdrInv" 
 
<div class="STable"> 
 
<div class="sitezones"> 
 
<div class="row"> 
 
    <div class="col"> 
 
     <b> Text3</b> 
 
    </div> 
 
</div>

webdriver的代码

List<WebElement> table = driver.findElements(By.xpath("//div[contains(@class,'hdrInv')]")); 
System.out.println("No of Tables: "+table.size()); 
for(int tabind=0;tabind<table.size(); tabind++){ 
    System.out.println("ROWText: "+table.get(tabind).findElement(By.xpath("//div[1]/div[contains(@class,'site-zones')]/div[@class='row']/div[2]")).getText()); 
} 

它显示, ROWText:文本1 ROWText:文本1 ROWText:文本1

+0

请帮助什么? –

+0

在编辑中添加了预期的输出 – codefemme

回答

0

你可以试试下面的代码。

List<WebElement> table = driver.findElements(By.xpath("//div[contains(@class,'hdrInv')]")); 
System.out.println("No of Tables: "+table.size()); 

for(int tabind=0;tabind<table.size();tabind++) 
{ 
    System.out.println("ROWText: "+table.get(tabind).findElement(By.xpath(".//div[1]/div[contains(@class,'site-zones')]/div[@class='row']/div/b")).getText()); 
} 
0

以下只是可能的工作,虽然没有测试过。

您需要使用.//./上寻找与元素,否则我想它会发现从开始元素,html

private List<WebElement> table = driver.findElements(By.xpath("//div[contains(@class,'hdrInv')]")); 
     System.out.print("No of Tables: "+table.size()); 
     for(int tabind=0; tabind<table.size(); tabind++){ 
      System.out.println("ROWText: "+table.get(tabind).findElement(By.xpath(".//div[@class='col']/b")).getText()); 
     } 
+0

如果“getText()”不起作用,可以通过getAttribute(“innerHTML”)获取文本 – Monika

+0

我试过这个,我得到错误:无法找到元素。 – codefemme

+0

@codefemme哪一行?请稍等并检查,或使用berakpoint调试代码并检查。 –

0

我找到了一个解决方案:

List <WebElement> rows = driver.findElements(By.xpath("//div[contains(@class,'STable')]/div/div[@class='row']")); 
      for(WebElement row:rows) 
      { 
       System.out.println("Text "+row.findElement(By.xpath("div[2]")).getText()); 
      }