2014-01-14 66 views
0

我有一個DataGrid,我需要檢索的價值,我可以動態地識別該項目旁邊。硒的webdriver - 在DataGrid檢索動態值

場景試圖做什麼: 這是一個角色數據格式的HTML表單,其中包含角色名稱和權限計數。管理員會點擊一個角色,彈出一個對話框,管理員將更新角色並保存。角色數會更新。我的腳本根據場景檢查數字增量和減量。

我試圖做的是拿出,將搜索基於角色名稱中的「數據-RK」屬性,然後收集在相鄰權限的數據統計列的腳本。

下面是表:

<tbody id="rolesForm:rolesTable_data" class="ui-datatable-data ui-widget-content"> 
     <tr class="ui-widget-content ui-datatable-even" aria-selected="false" role="row"    
      data-rk="Role1" data-ri="0"> 
      <td role="gridcell">Role1</td> 
      <td role="gridcell"> 
      <span id="rolesForm:rolesTable:0:permissions">3</span> 
      </td> 
     </tr> 
     <tr class="ui-widget-content ui-datatable-odd ui-state-hover" aria- 
      selected="false" role="row" data-rk="Role2" data-ri="1"> 
      <td role="gridcell">Role2</td> 
      <td role="gridcell"> 
       <span id="rolesForm:rolesTable:1:permissions">38</span> 
      </td> 
     </tr> 

如何檢索數據的任何建議?

回答

0

下面的代碼將有助於你得到你想要的特定數據-RK屬性計數。在本例中,我正在搜索具有data-rk屬性「Role1」的tr元素

首先通過它的ID屬性查找表格主體元素,然後從該元素中的權限計數列中獲取字符串,如下所示:

WebElement table = driver.findElementById("rolesForm:rolesTable_data"); 
    String pCount = table.findElement(By.xpath("/tr[@data-rk=\"Role1\"]/td[2]")).getText(); 
    // The returned object is a string. If you like, you could convert it to an integer 
    int count = Integer.parseInt(pCount); 

請注意,此代碼將只返回滿足條件的第一個tr元素。如果你的表有多個tr元素滿足這個條件,那麼你將不得不創建一個tr元素列表,然後遍歷它們以獲得計數。您可以得到如下列表:

WebElement table = driver.findElementById("rolesForm:rolesTable_data"); 
    List<WebElement> rows = table.findElements(By.xpath("/tr[@data-rk=\"Role1\"]); 
    // Iterate over rows to get each count 
    for (WebElement row : rows) { 
     String pCount = row.findElement(By.xpath("/td[2]")).getText(); 
     // Do whatever you want with pCount 
    } 
+0

感謝您的快速響應...但是,我收到一個錯誤,您不能將Webelement轉換爲字符串。任何建議的更新? – zerotres

+0

你能告訴我哪一行給出這個錯誤嗎? getText()方法返回一個字符串,我只在創建字符串的地方使用它。我沒有將WebElement轉換爲其他任何地方的字符串。 – ucsunil

+0

上table.findElement它錯誤(By.xpath( 「/ TR [@數據-RK = \」 基於role1 \「]/TD [2] /跨度))的getText();錯誤消息指出:類型不匹配:不能從WebElement轉換爲字符串 – zerotres