【问题标题】:How to iterate over a table?如何遍历表?
【发布时间】:2016-11-23 00:29:34
【问题描述】:

我有一个结构如下的表:

<table>
 <tbody>
   <tr>
     <td> Name: </td>
     <td> Juan </td>
   </tr>
   <tr>
     <td> Name: </td>
     <td> Alex </td>
   </tr>
  </tbody>

我想遍历tr 中的第二个td 并获取名称(Juan,Alex) 为此,我编写了以下代码:

   driver.find_elements(:xpath => "//table/tbody/tr/td[2]").each do |r|
            puts  r.text
    end

它不会产生任何错误,没有unable to find element。任何事物。它只是跳过这些代码行。它也没有打印出任何空白。我在 do 循环中对其进行了测试,但没有到达那里。我知道 xpath 是正确的,我检查了 firebug。我在这里做错了什么?

【问题讨论】:

  • 你确定find_elements会在没有找到任何东西而不是空数组时引发错误吗?我会仔细检查你的 xpath。

标签: ruby selenium xpath selenium-webdriver


【解决方案1】:

您可以使用表格数据和表格行的 XPath 上的 for 循环轻松遍历 WebTable。请参阅示例程序 -

public class WebTable {
    WebDriver driver;

    @BeforeTest
    public void openWebSite() {

        // Open Raddif Gainer page
        driver = new FirefoxDriver();
        driver.get("http://money.rediff.com/gainers/bse/daily/groupa?src=gain_lose");
        driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
    }

    @Test
    public void CountRowsTest() {

        // Store all rows in the List
        List<WebElement> allRows = driver.findElements(By
                .xpath("//*[@id='leftcontainer']/table/tbody/tr"));

        // To get the all present rows in the Table
        System.out.println("Totoal rows are -- " + allRows.size());
    }

    @Test
    public void printallrowsTest() {

        // Store all rows in the List
        List<WebElement> allRows = driver.findElements(By
                .xpath("//*[@id='leftcontainer']/table/tbody/tr"));

        // To Print the whole content of the table
        for (int i = 0; i < allRows.size(); i++) {
            System.out.println(allRows.get(i).getText());
        }
 }

更多细节,你可以参考这个神奇的教程:

http://www.seleniumbix.com/#!handle-webtables-in-selenium/c329

【讨论】:

  • OP 想要它在 ruby​​ 中。你已经在 java 中发布了
  • 由于发布代码的复杂性,应该可以轻松转换为 Ruby。
猜你喜欢
  • 2013-10-14
  • 2013-01-26
  • 2019-02-14
  • 1970-01-01
  • 2014-12-14
  • 2013-06-15
  • 1970-01-01
  • 2022-06-22
相关资源
最近更新 更多