Ruby 如何查找特定字符串所在的行和单元格?硒/红宝石
我在IE 11/和chrome中使用Selenium和Ruby 我试图编写一个脚本,在表中查找特定的文本片段,并返回它存在的列和行 我在网上找到了一些相近的例子,但它们只是返回单元格中的值,而不是返回文本的位置 为了找到我使用的对象(文本)Ruby 如何查找特定字符串所在的行和单元格?硒/红宝石,ruby,google-chrome,selenium,internet-explorer,Ruby,Google Chrome,Selenium,Internet Explorer,我在IE 11/和chrome中使用Selenium和Ruby 我试图编写一个脚本,在表中查找特定的文本片段,并返回它存在的列和行 我在网上找到了一些相近的例子,但它们只是返回单元格中的值,而不是返回文本的位置 为了找到我使用的对象(文本) varObject = driver.find_element(:xpath, "//*[contains(text(),'#{varDevice}')]") driver.execute_script("arguments[0].style.bor
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.0
*复选框*
192.168.0.100
在这个场景中,我想查找192.168.0.100并返回它在第2行
这样我就可以点击第2行的复选框了
谢谢有几种方法可以实现这一点,例如:
- 遍历表中的行
- 在第2列中查找文本匹配项
- 找到后,单击第1列中的复选框
- 查找文本匹配的元素(即,您已经找到的内容)
- 通过将类似于
的xpath应用于上述内容来查找相对列/../td[1]
- 查找文本匹配的元素,如上面所示
- 使用一些来确定行号
//td[contains(text(),'#{varDevice}')]
有几种方法可以实现这一点,例如:
- 遍历表中的行
- 在第2列中查找文本匹配项
- 找到后,单击第1列中的复选框
- 查找文本匹配的元素(即,您已经找到的内容)
- 通过将类似于
的xpath应用于上述内容来查找相对列/../td[1]
- 查找文本匹配的元素,如上面所示
- 使用一些来确定行号
//td[contains(text(),'#{varDevice}')]
我假设复选框是一个输入。如果不是,您可以调整XPath
//input[../following-sibling::td[contains(.,'192.168.0.100')]]
这将找到一个
输入
,它的父级(TD)有一个包含您要查找的IP的同级TD
。它适用于提供的HTML,但我猜您发布的HTML不完整,因此您可能需要调整它。我假设复选框是一个输入。如果不是,您可以调整XPath
//input[../following-sibling::td[contains(.,'192.168.0.100')]]
这将找到一个
输入
,它的父级(TD)有一个包含您要查找的IP的同级TD
。它与提供的HTML一起工作,但我猜您发布的HTML不完整,因此您可能需要调整它。您当前如何查找文本?请出示一些代码。这是我用了几次时间找到的对象。在本例中,varDevice是打印机的静态IP。varObject=driver.find_元素(:xpath,“/*[contains(text(),“#{varDevice}')]”)以及HTML是什么样子?我再说一遍,你能不能提供一个你正试图解决的问题?不同的答案可能更适合不同的情况。例如,请看。谢谢大家。我接受了JeffC注释以使代码正常工作。现在我需要接受Tom Lord的评论,使其更加健壮。有没有办法检查并给你们所有人评分?我最终使用了这个varObject=driver.find_元素(:xpath,“//*[../following sibling::td[contains(,'192.168.0.01')]”)varObject.click您当前如何查找文本?请出示一些代码。这是我用了几次时间找到的对象。在本例中,varDevice是打印机的静态IP。varObject=driver.find_元素(:xpath,“/*[contains(text(),“#{varDevice}')]”)以及HTML是什么样子?我再说一遍,你能不能提供一个你正试图解决的问题?不同的答案可能更适合不同的情况。例如,请看。谢谢大家。我接受了JeffC注释以使代码正常工作。现在我需要接受Tom Lord的评论,使其更加健壮。有没有办法检查并给你们所有人评分?最后我使用了这个varObject=driver.find_元素(:xpath,“//*[../following sibling::td[contains(,'192.168.0.01')]”)varObject.click你真的主张使用绝对xpath吗?这将是非常脆弱的,我想不出哪一次(除了实际的XML)这样做是个好主意。不,对不起,这有点误导。我真正想说的是“在表格中搜索,而不是在整个页面的任何地方”。(编辑了我的答案)更多反馈。。。您可以使用///*/table
而不是///table
,但我会将整个内容缩短为///td[contains(text(),'#{varDevice}')]
。不会有什么大麻烦的<