如何找到特定字符串所在的行和单元格?硒/红宝石

时间:2017-11-03 13:56:33

标签: ruby google-chrome selenium internet-explorer

我使用Selenium和Ruby与IE 11 /和chrome

我试图编写一个脚本来查找表中的特定文本并返回它所存在的列和行。

我在网上发现了一些近似的例子,但他们只是在单元格中返回值,而不是返回文本的位置。

要找到我正在使用的对象(文本)

  varObject = driver.find_element(:xpath, "//*[contains(text(),'#{varDevice}')]")

 driver.execute_script("arguments[0].style.border='3px solid red'", varObject) #Make sure I'm pointing to the correct text.

我希望我可以附加表格本身的代码,但不幸的是,我不允许分享任何代码。

我的目标是拿一张第1行x列有一个复选框的表格,我试图找到的文字在第2栏第x行并抓住该行,这样我就可以点击复选框了第1列第x行。一旦我弄清楚我正在搜索的文字的X是什么,点击复选框就很容易了。

示例:

 <html>
 <body>
   <table>
     <tr>
       <td>
           *A check box*
       </td>
       <td> 192.168.0.0
       </td>
     </tr>

     <tr>
       <td>
           *A check box*
       </td>
       <td> 192.168.0.100
       </td>
     </tr>
   </body>

在这种情况下,我想查找192.168.0.100并返回它在第2行 这样我就可以点击第2行的复选框。

由于

2 个答案:

答案 0 :(得分:0)

有几种方法可以实现这一目标,例如:

  1. 搜索表:

    • 遍历表格行。
    • 在第2列中查找文字匹配
    • 找到后,单击第1列中的复选框。
  2. 通过相对xpath查找相邻列:

    • 找到文本匹配的元素(即您已经拥有的内容)
    • 通过在上面应用/../td[1]之类的xpath来查找 relative 列。
  3. 正如您最初建议的那样,通过查找表格中的行号:

    • 找到带有文字匹配的元素,如上所述。
    • 使用一些clever xpath logic来确定行号。
  4. 作为旁注,我建议让你当前的xpath比“搜索整个页面”更具体。在某些时候,你必然会错误地发现错误的东西。相反,你可以做类似的事情:

    //td[contains(text(),'#{varDevice}')]
    

答案 1 :(得分:0)

我假设复选框是INPUT。如果不是,您可以调整XPath。

//input[../following-sibling::td[contains(.,'192.168.0.100')]]

这会找到一个INPUT,其父级(TD)有一个兄弟TD,其中包含您要查找的IP。它适用于提供的HTML,但我猜你发布的HTML不完整,所以你可能需要调整它。