2017-07-19 58 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()); 
      }