我们可以在 selenium python 中找到文本的 xpath 吗?

Can we find xpath of a text in selenium python

提问人:Raghavendra Phayde 提问时间:4/30/2020 最后编辑:Raghavendra Phayde 更新时间:5/1/2020 访问量:6477

问:

请考虑网页中的下表enter image description here

我想知道哪些公司都来自英国国家。 所以我有作为英国的输入 我可以通过 selenium python 找到这个“UK”的 xpath,以便我可以修改该 xpath 以获取相关输出。 这可能吗,请告诉我。

提前致谢

编辑:我会给英国作为输入,我必须在英国找到相应的公司 答: 如果表格只包含文本,那么如果表格元素有指向其他页面
的链接 xpath - ,则选择您选择的元素以查找答案
xpath = "//td[text()='Country']/preceding-sibling::td" "//a[text()='Country']/parent::td/preceding-sibling::td"

如果您不确定是否使用文本,您可以使用//TAG[contains(text(),'TEXT')]

您可以在 Google Chrome 的“开发者控制台”中测试您的 xpath$any_variable("xpath")

有兴趣的可以浏览 https://www.w3.org/TR/2017/REC-xpath-31-20170321/#id-introduction 了解如何查询XPath

谢谢

python selenium selenium-webdriver xpath chrome-web-driver

评论

0赞 KunduK 4/30/2020
编辑您的问题并发布该表的 DOM 以及您的代码跟踪。

答:

0赞 Rola 4/30/2020 #1

是的,您可以使用属性,假设包含国家/地区名称的元素是 。
然后,您可以通过以下方式找到带有英国文本的所有元素:
texttd

elements= driver.find_elements_by_xpath("//td[text()='UK']")
3赞 nugbe 4/30/2020 #2

我想HTML是这样的:

<tr>
 <td>
     Island Trading
 </td>
 <td>
     Helen Bennet
 </td>
 <td>
     UK
 </td>
</tr>
......  (more rows)

# Make a for to get all TDs of each "important" TR, that is, 
# a TR that includes a TD with 'UK' text
for actualRow in self.driver.find_elements_by_xpath("//td[text()='UK']/parent::tr/td"):
    # Now select only the first TD
    thisRowsTD=actualRow[0]
    # Print information you need here (Text, id, name...)
    print(thisRowsTD.text)

我希望这会有所帮助!

评论

1赞 Raghavendra Phayde 5/1/2020
谢谢@nugbe它奏效了。正如我在上面提到的错误代码,它有一些冲突。但谢谢,它帮助我弄清楚了我面临的问题。我忘了提到那些不是文本,而是表格中的链接。我使用 xpath 作为 <code>“//a[text()='Country']/parent::td/preceding-sibling::td”</code>。然后我在结果中找到了第一个元素