【问题标题】:Would it be possible to get xpath location from value?是否可以从值中获取 xpath 位置?
【发布时间】:2020-06-03 12:59:06
【问题描述】:

我一直在尝试在 Python 3.7 上使用 Selenium 抓取网站的这一部分,它没有什么独特之处,网站的许多部分具有完全相同的风格。

  <tr><td style="black 2px solid" colspan="1"></td></tr>
  <tr><td>Total</td><td style="color: blue" valign="top">1,233</td><td style="color: green" valign="top"> (86.35%) </td></tr>
  <tr><td colspan="1">&nbsp;</td></tr>

唯一独特的是值是“Total”,我需要在“1,233”之后刮掉 td。 使用时:通过 xpath 查找元素我使用这个 xpath:

('.//td[text()="Total"]')

我一直在玩弄路径,但没有运气。

是否可以从值中获取 xpath 位置?

谢谢你:-)

【问题讨论】:

标签: python-3.x selenium xpath web-scraping


【解决方案1】:

要获取值 1,233,请使用以下任一 xpath。

//td[text()='Total']/following-sibling::td[1]

或

//tr[.//td[text()='Total']]/td[2]

在 selenium 中使用 python

print(driver.find_element_by_xpath("//tr[.//td[text()='Total']]/td[2]").text)

或者

print(driver.find_element_by_xpath("//td[text()='Total']/following-sibling::td[1]").text)

最佳实践诱导WebDriverWait() 并等待visibility_of_element_located()

print(WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,"//td[text()='Total']/following-sibling::td[1]"))).text)

您需要导入以下库。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

【讨论】:

  • 非常感谢!
  • @AshwinMelwani:很高兴有帮助。
  • 我对 WebDriverWait until 的使用很感兴趣。 y = driver.find_elements_by_xpath(d)[0].text 是否可以在查找值时使用它,就像上面的情况一样?
  • @AshwinMelwani :我建议请通过该链接selenium-python.readthedocs.io/waits.html
  • 会的。干杯。
【解决方案2】:

这应该可行:

//td[text()="Total"]/following-sibling::td[1]

你可以在这里测试它:https://www.freeformatter.com/xpath-tester.html

【讨论】:

  • 非常感谢!感谢您发送的令人敬畏的资源。已添加书签。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
相关资源
最近更新 更多