【问题标题】:How to get element(text) from a table using Selenium WebDriver with Python如何使用 Selenium WebDriver 和 Python 从表中获取元素(文本)
【发布时间】:2020-12-30 00:16:58
【问题描述】:

尝试使用 XPATH 从表中获取元素(文本)然后打印,但出现以下错误:

NoSuchElementException:消息:没有这样的元素:无法定位 元素。

我已经等了一段时间,但得到了同样的错误。如何获取文本?

我使用了以下代码:

account = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="ctl00_lc_ucLeftMenu_li_1_4"]/a[2]')))
account.click()
time.sleep(3)
portfolio = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="ctl00_lc_ucLeftMenu_leaf_2_35"]')))
portfolio.click()
time.sleep(3)
sold = driver.find_element_by_xpath('//*[@id="37ef7b7a-3a62-4d56-a479-29c99031de7e"]/table/tbody/tr[8]/td[5]')
print('The amount is: {}'.format(sold.text))
sold1 = float(sold.text)

请参阅附件 - 以获取突出显示的文本。

【问题讨论】:

  • 您的 xpath 是第 5 个而不是第 10 个 td,但这不是错误的重点 - 请您改进您的问题,并提供一些代码作为文本而不是图像。
  • 图像是我试图从中获取文本的 html。你是对的,突出显示的是第 10 个 td,但是,我应该有 612,但我得到了错误“找不到元素”。
  • 该 id 可能是动态的并且可能会切换。
  • @Mardjacku 这很清楚,但又一次 -> 你能否改进你的问题,请提供一些你的书面代码作为文本而不是图像。 How to create a Minimal, Reproducible Example 这将帮助我们所有人重现该行为。非常感谢。
  • @Arundeep Chohan:id 不是动态的;点击投资组合后,我想得到的表格和金额如上图所示。

标签: python selenium selenium-webdriver


【解决方案1】:

要获取该特定文本,xpath 不是正确的。相反,我使用了以下一个:

//table/tbody/tr[8]/td[10]

完整的代码如下所示:

account = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH, '//*    
[@id="ctl00_lc_ucLeftMenu_li_1_4"]/a[2]')))
account.click()
time.sleep(3)
portfolio = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH, '//* 
[@id="ctl00_lc_ucLeftMenu_leaf_2_35"]')))
portfolio.click()
time.sleep(3)
sold = driver.find_element_by_xpath('//table/tbody/tr[8]/td[5]')
print('The amount is: {}'.format(sold.text))
sold1 = float(sold.text)

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多