首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态表数据检索- selenium webdriver

动态表数据检索- selenium webdriver
EN

Stack Overflow用户
提问于 2013-04-11 14:31:23
回答 9查看 69.2K关注 0票数 2
代码语言:javascript
复制
<table id="tblListViewHeader" class="adminlist" cellspacing="1" cellpadding="0" style="table-layout: fixed; width: 1003px;">
<tbody>
</table>
</td>
</tr>
<tr>
<td>
<div id="divListView" style="width: 100%; height: 300px; overflow: auto; display: block;">
<table id="tblListView" class="adminlist" cellspacing="1" cellpadding="0" style="table-layout: fixed; width: 100%;">
  <tbody data-bind="template: { name: 'ActiveGradeTemplate', foreach: ActiveGrade }">
    <tr class="row0">
      <td data-bind="text:$index()+1" style="width: 5%;">1</td>
      <td data-bind="text: GradeName" style="width: 20%;">Vantage Point</td>
      <td align="right" data-bind="text: DisplayCreatedDate" style="width: 10%;">27 Mar 2013</td>
      <td align="right" data-bind="text: CreatedByUser" style="width: 10%;">Name</td>
      <td align="right" data-bind="text: DisplayModifiedDate" style="width: 10%;">27 Mar 2013</td>
      <td align="right" data-bind="text: ModifiedByUser" style="width: 10%;">Name</td>
      <td align="center" data-bind="text: Status" style="width: 5%;">Active</td>
      <td align="center" style="width: 10%;">
        <a id="lnkEdit_7" data-bind="click: $root.lnkEdit, attr:{'id':'lnkEdit_' + GradeID}" href="#">Edit</a>
        <span id="spanEdit_7" data-bind="attr:{'id':'spanEdit_' + GradeID}"></span>
      </td>
   </tr>
   <tr class="row0">
     <td data-bind="text:$index()+1" style="width: 5%;">2</td>
     <td data-bind="text: GradeName" style="width: 20%;">test grade</td>
     <td align="right" data-bind="text: DisplayCreatedDate" style="width: 10%;">Yesterday</td>
     <td align="right" data-bind="text: CreatedByUser" style="width: 10%;">Name</td>
     <td align="right" data-bind="text: DisplayModifiedDate" style="width: 10%;">Yesterday</td>
     <td align="right" data-bind="text: ModifiedByUser" style="width: 10%;">Name</td>
     <td align="center" data-bind="text: Status" style="width: 5%;">Active</td>
     <td align="center" style="width: 10%;">
       <a id="lnkEdit_11" data-bind="click: $root.lnkEdit, attr:{'id':'lnkEdit_' + GradeID}" href="#">Edit</a>
      <span id="spanEdit_11" data-bind="attr:{'id':'spanEdit_' + GradeID}"></span>
    </td>
  </tr>

如何检索每一行的td值,这是为了动态生成。所有的tr类名都是相同的:<tr class="row0">。如何检索上述格式化表格的表格数据?

EN

回答 9

Stack Overflow用户

发布于 2013-04-11 18:18:37

尝试下面的代码,这将打印所有单元格数据,

代码语言:javascript
复制
// Grab the table 
WebElement table = driver.findElement(By.id("divListView")); 

// Now get all the TR elements from the table 
List<WebElement> allRows = table.findElements(By.tagName("tr")); 

// And iterate over them, getting the cells 
for (WebElement row : allRows) { 
    List<WebElement> cells = row.findElements(By.tagName("td")); 

    // Print the contents of each cell
    for (WebElement cell : cells) { 
        System.out.println(cell.getText());
    }
}
票数 15
EN

Stack Overflow用户

发布于 2014-11-20 19:16:36

代码语言:javascript
复制
  // Grab the table 
  WebElement table = driver.findElement(By.id("table-6")); 

  //Get number of rows in table 
  int numOfRow = table.findElements(By.tagName("tr")).size(); 

  //Get number of columns In table.
  int numOfCol = driver.findElements(By.xpath("//*[@id='table-6']/tbody/tr[1]/td")).size();


  //divided Xpath In three parts to pass Row_count and Col_count values.
  String first_part = "//*[@id='table-6']/tbody/tr[";
  String second_part = "]/td[";
  String third_part = "]";

  //take the second column values
  int j=2;

  //List to store the second column
  List<String> secondColumnList=new ArrayList<String>();

  //Loop through the rows and get the second column and put it in a list
  for (int i=1; i<=numOfRow; i++){

    //Prepared final xpath of specific cell as per values of i and j.
       String final_xpath = first_part+i+second_part+j+third_part;
       //Will retrieve value from located cell and print It.
       String test_name = driver.findElement(By.xpath(final_xpath)).getText();
       secondColumnList.add(test_name);  
       System.out.println(test_name);

  }
票数 2
EN

Stack Overflow用户

发布于 2019-11-02 22:59:31

动态表数据捕获:1.首先捕获表头数。int tHeadCount = driver.findElements(By.xpath("//table//tr//th")).size();

2.捕获您的实际数据所在的行的表行计数。从我的观点来看,我需要第一行的数据,所以我把它硬编码为-in。如果需要,请在现有代码中添加一个for循环。

3.实际的解决方案从这里开始。下面的函数调用“存放人”是对应表格数据的表格标题文本。

代码语言:javascript
复制
String tableDataValue = managePackageTableData("Deposited By");

public String  managePackageTableData(String columnName) {

//In Following line i am capturing table contains how many headers.     
        int tHeadCount = driver.findElements(By.xpath("//table//tr//th")).size();

    int statusIndex = 0;
    for(int i=0;i<tHeadCount-1;i++)
    {
    String theadValue = driver.findElements(By.className("table")).get(0).findElements(By.tagName("tr")).get(0).findElements(By.tagName("th")).get(i).getText();


    if(theadValue.equalsIgnoreCase(columnName))
    {
        statusIndex = i;
        break;
    }
    }       
    String tableData = driver.findElements(By.tagName("tbody")).get(0).findElements(By.tagName("tr")).get(0).findElements(By.tagName("td")).get(statusIndex).getText();

    return tableData;

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15942101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档