ruby - 如何遍历一个表?

标签 ruby selenium xpath selenium-webdriver

我有一个结构如下的表:

<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 。我在这里做错了什么?

最佳答案

您可以在表数据和表行的 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

关于ruby - 如何遍历一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38469915/

相关文章:

ruby - 如何将新的 rvm 安装与现有的 ruby​​ 版本相关联?

linux - 从 Vagrant for Firefox 反向 X11 转发

python - 如何在 Python 中将弹出窗口置于前台

java - 无法使用 Java 和 Selenium 通过部分链接文本查找元素

c - Ruby 全局解释器锁 (GIL) - rb_thread_call_without_gvl

ruby-on-rails - 连接被拒绝 - connect(2) for "localhost"port 1025 - Devise Mailer

ruby-on-rails - 如何让 datamapper 与 postgresql 数据库一起工作?

python - Selenium 下载完整的 html 页面

java - 为什么<xsl :value-of select ="1"/> returns 1?

python - 如何在html中为div和strong编写xpath