【发布时间】:2018-11-04 01:36:54
【问题描述】:
所以我遇到了需要 90% 时间的问题
//*[@id='MainContent']/tbody/tr[18]/td[2]
而我需要 10% 的时间
//*[@id='MainContent']/tbody/tr[20]/td[2]
我想知道补偿这种变化的最佳方法是什么。
我需要捕获3 Bedrooms 部分,并且有时tr 元素会交换。大多数情况下,第一个 xpath 代码有效,但我需要一种更有效的方法来确定要使用的 xpath,具体取决于手头的情况。
我知道有一种用于 selenium 的 starts-with 方法,但这是否允许我搜索实际的 TD 文本?
【问题讨论】:
-
你能检查第一个 xpath 元素的文本,并用它来决定你需要哪个元素吗?即类似
if 'Bedrooms' in driver.find_element_by_xpath('//*[@id='MainContent']/tbody/tr[18]/td[2]')? -
我可以做到这一点,但我想知道是否有一种已经存在的 selenium 方法可以做到这一点,所以不是使用 if 语句,而是有一种方法可以搜索文本,如果找到文本可以复制xpath @JohnGordon
-
我不明白你在问什么。
if 'something' in element.text:尽可能直接。 -
@JohnGordon selenium 没有直接进行此查找的方法吗?例如,像这样: //*[text()[contains(.,'theText')]]
-
哦,你的意思是一个 XPath 选择器。这与 Selenium 无关。
标签: python python-3.x selenium selenium-webdriver xpath