2017-07-17 56 views
0

我有一個使用'div'元素創建的表格,它具有基於選擇的動態內容以及要顯示的數據。使用Selenium導航通過DIV元素創建的HTML表格

我想找到一種方法來點擊表格最後一行的一些圖標。無法使用getElementID執行此操作,就好像有多行一樣,那麼所有圖標都具有相同的ID。有沒有其他的方式可以做到這一點?

<div class="cv-layout"> 
    <div class="row cv-layout-body"> 
     <div class="mobile-col-12 tablet-col-12 desktop-col-12 settlement-container cv-panel"> 
      <div class="row header"> 
       <div class="tablet-col-1">Ref</div> 
       <div class="tablet-col-2">Rec</div> 
       <div class="tablet-col-2">Amt</div> 
       <div class="tablet-col-3">Say</div> 
       <div class="tablet-col-3 text-right">Pay</div> 
       <div class="tablet-col-1 center-text">Age</div> 
      </div> 
      <div class="settlement-item"> 
       <div class="row settlement-read-item bordered"> 
        <div class="tablet-col-1">Col1Row1</div> 
        <div class="tablet-col-2">Col2Row1</div> 
        <div class="tablet-col-2"><span>Col2aRow1</span> 
        </div> 
        <div class="tablet-col-3"> 
         <div> 
          <div> 
           <p><span class="item-header prevent-break">Value: 356 €</span> 
           </p> 
          </div> 
         </div> 
        </div> 
        <div class="tablet-col-3 text-right"> 
         <div> 
          <p><span class="item-header prevent-break"><span>XZS $34</span> 
           <!-- react-text: 1647 -->&nbsp; 
           <!-- /react-text --><span>BAS $321</span></span> 
          </p> 
         </div> 
        </div> 
        <div class="tablet-col-1"> 
         <div class="center-text"><span class="icon-unconfirmed confirm link-icon "></span><span class="icon-edit link-icon edit"></span><span class="icon-delete link-icon remove"></span> 
         </div> 
        </div> 
       </div> 
      </div> 
+0

你沒有使用'ID = 「」'在模板中的任何地方。您可以選擇使用查詢字符串,例如'.link-icon.confirmed','.link-icon.edit','.link-icon.remove' - 或者您可以給這些操作提供更好的命名。 – Narxx

+0

您可以使用CSS選擇器來匹配類或XPath以表示與另一個元素的關係。 –

+0

你能告訴我們你的工作嗎?謝謝 – DebanjanB

回答

2

想法是首先找到要執行操作的表格,然後導航到特定行並執行操作。

當我們知道行的內容是什麼時,下面的代碼將工作,在這種情況下,我們將執行getText並比較值,如果發現值會點擊並退出循環,這將有助於保持事物動力學。

List<WebElement> tableElement = driver.findElements(By.xpath("//div[contains(@class,'settlement-item')]")); // findElements will return a list of table elements 
for (WebElement webElement : tableElement) { 
if (webElement.getText().contains(rowData)) { //rowData is the data value which we are looking for to perform operation on 
      webElement.click(); 
      break; 
} 
  • 如果這個想法是讓最後一排因爲我們有

    列表中,我們可以得到的長度,並在其上執行某些操作進行操作。

    List<WebElement> tableElement = 
         driver.findElements(By.xpath("//div[contains(@class,'settlement-item')]")); // findElements will return a list of table elements 
         int index = tableElement.size(); 
         tableElement.get(index-1).click(); 
        } 
    
  • 0

    你可以找到類似的信息(我使用Python)的最後一行:

    all_rows = driver.find_elements_by_css_selector("div.settlement-item div.row") 
    last_row = all_rows[-1] 
    

    然後點擊行中的圖標:

    unconfirmed_icon = last_row.find_element_by_css_selector("span.icon-unconfirmed") 
    unconfirmed_icon.click()