【问题标题】:Python Selenium - can't get elements by xpathPython Selenium - 无法通过 xpath 获取元素
【发布时间】:2020-01-26 01:39:15
【问题描述】:
    <table class="wikitable" style="float: right;">
    <caption>Current UTC
    </caption>
    <tbody><tr>
    <td>**January 26, 2020 01:13:27 (UTC) –** <span class="plainlinks" id="purgelink"><span class="nowrap"><a class="external text" href="https://en.wikipedia.org/w/index.php?title=Coordinated_Universal_Time&amp;action=purge">Refresh</a></span></span>

</td></tr></tbody></table>

我只需要知道日期。我试过了:

utc = driver.find_element_by_xpath('//*[@id="mw-content-text"]/div/table[1]/tbody/tr/td/text()')

错误:

无效的选择器:xpath 表达式的结果是:[object Text]。它应该是一个元素。

请帮忙。

【问题讨论】:

  • 你试过用双引号吗?
  • 是的。还是不行=(
  • 这能回答你的问题吗? How to get text, using Selenium Python XPATH
  • utc = driver.find_element_by_xpath('//*[@id="mw-content-text"]/div/table[1]/tbody/tr/td').text
  • 谢谢尼克!它实际上解决了我的问题。尽管那里有刷新链接文本,但是

标签: python selenium xpath


【解决方案1】:

这是您要获取的 xpath 的固定版本。

utc = driver.find_element_by_xpath('//*[@id="mw-content-text"]/div/table[1]/tbody/tr/td')
print(utc.text)

但上面将包含“刷新”链接的文本。仅获取您可能尝试的日期:

utc = driver.find_element_by_xpath('//*[@id="mw-content-text"]/div/table[1]/tbody/tr/td')
utc_trim = utc.get_attribute('innerHTML').split('<')[0]
print(utc_trim)

为了帮助解决页面加载时间问题,您可能需要执行以下操作:

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

utc = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="mw-content-text"]/div/table/tbody/tr/td')))
utc_trim = utc.get_attribute('innerHTML').split('<')[0]
print(utc_trim)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-19
    • 2019-10-13
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 2020-06-20
    相关资源
    最近更新 更多