消息:没有这样的元素:无法定位元素异常 - Python selenium

问题描述 投票:0回答:2

我正在尝试找到一个要单击的元素。我可以使用 DevTools 从浏览器中找到该元素,但使用 Selenium 时会遇到错误,找不到元素。

我的代码:

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

driver=webdriver.Chrome()
driver.implicitly_wait(2)
driver.get("https://www.fsmone.com.my/funds/tools/factsheet/aham-bond-fund?fund=MYAFCAPF")
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH,"//div\[@id='content'\]")))

element=driver.find_element(By.XPATH, "//span\[text()='Latest NAV Price '\]")
element.click()

它返回以下错误

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//span[text()='Latest NAV Price ']"}

源代码

python selenium-webdriver web-scraping
2个回答
2
投票

请参阅下面的工作重构代码:

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

driver=webdriver.Chrome()
driver.get("https://www.fsmone.com.my/funds/tools/factsheet/aham-bond-fund?fund=MYAFCAPF")

# Create explicit wait object with wait time of 10s
wait = WebDriverWait(driver, 10)

element = wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Latest NAV Price ']")))
element.click()
time.sleep(10)

注意几点:

  1. 混合使用
    implicit wait
    explicit wait
    并不是最佳做法。如果您注意到我已从您的代码中删除了
    driver.implicitly_wait(2)
    。只需使用一个
    wait
    对象即可有效定位所有元素,就像我在上面的代码中所做的那样。
  2. 您无需等待并检查任何
    presence of element
    即可单击所需的元素(最新资产净值价格)。我已经删除了您检查是否存在
    //div[@id='content']
    的代码行。以下代码已经解决了这个问题
element = wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Latest NAV Price ']")))

0
投票

如果没有源代码,你正在使用它很难说,但从这里看来,你只是试图单击文本,而不是按钮。

以 stackoverflow 点赞为例,

此代码应该适用于按下upvote xpath。

driver.find_element(By.XPATH, '//*[@id="question"]/div[2]/div[1]/div/button[1]').click()

您是否尝试单击按钮/链接,或者尝试从页面中选择文本?

© www.soinside.com 2019 - 2024. All rights reserved.