如何使用Selenium计数和选择Web表中的某些行? [英] How can I count and select some rows in a Web table using Selenium?

查看:45
本文介绍了如何使用Selenium计数和选择Web表中的某些行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Selenium WebDriver和Java开发自动化测试,我需要确保Web表中有项目,并选择其中一项,但ID是动态的.

I'm developing an Automation test using Selenium WebDriver and Java, I need to assured that there are items in the web table, and select one of those items, but the ID is dynamic.

HTML代码:

<table class="datagrid-btable" cellspacing="0" cellpadding="0" border="0" style="table-layout: auto;">    <tbody>
      <tr id="datagrid-row-r4-2-0" datagrid-row-index="0" class="datagrid-row datagrid-row-selected">
         <td field="PLANT_CODE" style="display:none;">
            <div style="text-align: left;" class="datagrid-cell datagrid-cell-c4-PLANT_CODE">1001</div>
         </td>
         <td field="PLANT_NM">
            <div style=";text-align:center;" class="datagrid-cell datagrid-cell-c4-PLANT_NM">TESTE1</div>
         </td>
         <td field="PU_NAME" style="display:none;">
            <div style=";text-align:left;" class="datagrid-cell datagrid-cell-c4-PU_NAME"></div>
         </td>
         <td field="SUPPLIER_CODE">
            <div style=";text-align:center;" class="datagrid-cell datagrid-cell-c4-SUPPLIER_CODE">SUP001AR</div>
         </td>
         <td field="SUPPLIER_NM">
            <div style=";text-align:center;" class="datagrid-cell datagrid-cell-c4-SUPPLIER_NM">SUPPLIER 001 AR</div>
         </td>
         <td field="ITEM_CODE">
            <div style=";text-align:center;" class="datagrid-cell datagrid-cell-c4-ITEM_CODE">ITEM001AR</div>
         </td>
         <td field="ITEM_NM">
            <div style=";text-align:left;" class="datagrid-cell datagrid-cell-c4-ITEM_NM">ITEM1 AR</div>
         </td>
         <td field="WRHOUSNG_NO" style="display:none;">
            <div style=";text-align:center;" class="datagrid-cell datagrid-cell-c4-WRHOUSNG_NO"></div>
         </td>
         <td field="ORDE_NO" style="display:none;">
            <div style=";text-align:center;" class="datagrid-cell datagrid-cell-c4-ORDE_NO"></div>
         </td>
      </tr>
      <tr id="datagrid-row-r4-2-1" datagrid-row-index="1" class="datagrid-row">
         <td field="PLANT_CODE" style="display:none;">
            <div style="text-align: left;" class="datagrid-cell datagrid-cell-c4-PLANT_CODE">1001</div>
         </td>
         <td field="PLANT_NM">
            <div style=";text-align:center;" class="datagrid-cell datagrid-cell-c4-PLANT_NM">BOCAR LERMA</div>
         </td>
         <td field="PU_NAME" style="display:none;">
            <div style=";text-align:left;" class="datagrid-cell datagrid-cell-c4-PU_NAME"></div>
         </td>
         <td field="SUPPLIER_CODE">
            <div style=";text-align:center;" class="datagrid-cell datagrid-cell-c4-SUPPLIER_CODE">SUP001AR</div>
         </td>
         <td field="SUPPLIER_NM">
            <div style=";text-align:center;" class="datagrid-cell datagrid-cell-c4-SUPPLIER_NM">SUPPLIER 001 AR</div>
         </td>
         <td field="ITEM_CODE">
            <div style=";text-align:center;" class="datagrid-cell datagrid-cell-c4-ITEM_CODE">ITEM001AR</div>
         </td>
         <td field="ITEM_NM">
            <div style=";text-align:left;" class="datagrid-cell datagrid-cell-c4-ITEM_NM">ITEM1 AR</div>
         </td>
         <td field="WRHOUSNG_NO" style="display:none;">
            <div style=";text-align:center;" class="datagrid-cell datagrid-cell-c4-WRHOUSNG_NO">PUR1</div>
         </td>
         <td field="ORDE_NO" style="display:none;">
            <div style=";text-align:center;" class="datagrid-cell datagrid-cell-c4-ORDE_NO">PUR1</div>
         </td>
      </tr>    </tbody> </table>

我尝试了"我的代码":

WebElement tbody = driver.findElement(By.xpath("//*[@class='datagrid-body']/tbody/tr"));

在这种情况下,我的请求将返回两行,那么如何计数行并选择其中之一?谢谢

In this case, my request is returning two rows so how can I count the rows and select one of these? Thanks

推荐答案

请尝试执行此步骤以获取所需的内容.

Try this step for get you want.

1.表初始化

在您的情况下,该表具有 datagrid-btable 类,这是初始化它的方式:

In your case, the table has the class datagrid-btable, the way to initialize it :

WebElement tbl = driver.findElement(By.className("datagrid-btable"));

2.行初始化

Web表格行的名称标签通常为 tr ,这是初始化它的方式:

The name tag for the web table row in general is tr, the way to initialize it :

List<WebElement> rows = tbl.findElements(By.tagName("tr"));

您可以使用

rowCount :

int count = rows.size();
System.out.println("count rows :" +count);

3.列初始化

Web表格列的名称标签通常是 th td ,这是初始化它的方式:

The name tag for the web table column in general are th or td, the way to initialize it :

td 标签

List<WebElement> cols = rows.get(rowIndex).findElements(By.tagName("td"));

因此您可以通过以下方式选择特定的单元格:

String cell = cols.get(indexCol).getText();

row1 中选择 col1 的示例:

Example for select col1 in row1 :

List<WebElement> cols = rows.get(0).findElements(By.tagName("td"));
String cell = cols.get(0).getText();
System.out.println("cell value :" +cell);

或者尝试执行此迭代以选择所有单元格表:

Or try this iteration for select all cell table :

for(int i=0; i<rows.size(); i++) {
    //check column each in row, identification with 'td' tag
    List<WebElement> cols = rows.get(i).findElements(By.tagName("td"));

    //column iteration
    for(int j=0; j<cols.size(); j++) {
        System.out.println("row " +(i+1) +" col " +(j+1) +" : " +cols.get(j).getText());
    }
}

这篇关于如何使用Selenium计数和选择Web表中的某些行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆