Selenium Webdriver-在datagrid中检索动态值

Selenium Webdriver-在datagrid中检索动态值,selenium,webgrid,Selenium,Webgrid,我有一个datagrid,我需要它来检索我可以动态识别的项旁边的值 该场景正在尝试执行的操作: 这是一个包含角色名称和权限计数的HTML表单角色数据网格。管理员将单击角色,弹出一个对话框,管理员将更新角色并保存。角色计数将更新。我的脚本检查数字是否根据场景递增和递减 我想做的是找到一个脚本,它将根据“dataRK”属性中的角色名称进行搜索,然后在相邻的permissions count列中收集数据 这是表格: <tbody id="rolesForm:rolesTable_data" cl

我有一个datagrid,我需要它来检索我可以动态识别的项旁边的值

该场景正在尝试执行的操作: 这是一个包含角色名称和权限计数的HTML表单角色数据网格。管理员将单击角色,弹出一个对话框,管理员将更新角色并保存。角色计数将更新。我的脚本检查数字是否根据场景递增和递减

我想做的是找到一个脚本,它将根据“dataRK”属性中的角色名称进行搜索,然后在相邻的permissions count列中收集数据

这是表格:

<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>

角色1
3.
角色2
38

关于如何检索该数据的任何建议?

以下代码将帮助您获取所需特定数据rk属性的计数。对于本例,我正在搜索具有数据rk属性“Role1”的tr元素

首先通过其ID属性查找表体元素,然后从该元素中获取permissions count列中的字符串,如下所示:

    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);
    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
    }
请注意,此代码只返回满足条件的第一个tr元素。如果您的表将有多个满足此条件的tr元素,那么您必须创建一个tr元素列表,然后对它们进行迭代以获得计数。您可以获得如下列表:

    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);
    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
    }
WebElement table=driver.findElementById(“角色表单:角色表数据”);
List rows=table.findelelements(By.xpath(“/tr[@data rk=\”Role1\”);
//迭代行以获得每个计数
for(WebElement行:行){
String pCount=row.findelelement(By.xpath(“/td[2]”);
//用pCount做你想做的事
}

感谢您的快速响应…但是,我收到一个错误,您无法将Webelement转换为字符串。有任何建议的更新吗?您能告诉我哪行出现此错误吗?getText()方法返回一个字符串,我正在创建字符串的唯一位置使用它。我没有在其他任何地方将WebElement转换为字符串。它在表.findelelement(By.xpath(“/tr[@data rk=\'Role1\'”]/td[2]/span))上出错。getText();错误消息状态:类型不匹配:无法从WebElement转换为StringElement。请取出span并使用table.findElement(By.xpath(“/tr[@data rk=\'Role1\'”])/td[2]”)。getText();感谢您的帮助。我已解决了问题。看起来我复制和粘贴了错误。您的代码工作得很好。