我正在尝试在表单中的备注字段后找到该文本。但是,该表有多个备注字段。我希望能够抓住第二个备注字段的td之后的td中的文本。我有以下html:
<table>
<tbody>
<tr>...</tr>
<tr>...</tr>
<tr>
<td>Remarks:</td>
<td>this is the first remarks field
</tr>
<tr>
<td>AnotherField:</td>
<td>Content of that field</td>
</tr>
<tr>
<td>Remarks:</td>
<td>this is the second remarks field</td>
</tr>
<tr>...</tr>
</tbody>
</table>
要从第一个备注字段中抓取文本,我可以执行以下操作:
ret = driver.find_element_by_xpath("//td[contains(text(),'Remarks')]/following::td")
print ret.text
但是,我需要从第二个备注字段中获取内容。这必须基于“备注”出现的索引而不是基于索引来完成。我想尝试这样的事情:
ret = self.driver.find_element_by_xpath("//td[contains(text(),'Remarks')][1]/following::td")
或:
rets = self.driver.find_elements_by_xpath("//td[contains(text(),'Remarks')]")[1]
ret = elements.find_element_by_xpath("/following::td")
理解,这些不起作用。有办法做到这一点吗?在第n次发生备注后使用“字段”行的命令是我正在寻找的。 p>
P.S。这必须使用xpath完成。原因是,我正在尝试将同事代码转换为来自另一个应用程序的selenium,该应用程序的所有内容都围绕着xpath。
我正在使用Selenium-2.44.0和Python 2.7。
答案 0 :(得分:1)
索引从XPath中的1开始:
(//td[contains(., 'Remarks')]/following-sibling::td)[2]
或者,您可以使用find_elements_by_xpath()
并获取第二项:
elements = self.driver.find_elements_by_xpath("//td[contains(., 'Remarks')]/following-sibling::td")
print elements[1].text