消息:没有这样的元素:无法定位元素 python selenium

时间:2021-06-19 13:16:45

标签: python selenium

我在 selenium python 中有这个错误

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div[24]/div[1]/div/div/div[3]/div[1]/div/button[1]"}

我想要带有这个 xpath 的元素:

driver.find_element_by_xpath("/html/body/div[24]/div[1]/div/div/div[3]/div[1]/div/button[1]").click() 

如果不存在,则单击具有其他 xpath 的其他元素,例如:

driver.find_element_by_xpath("/html/body/div[24]/div[1]/div/div/div[3]/div[1]/div/button[2]").click()

如果元素 1 不存在点击,则一切都清楚,点击元素 2

我如何在 selenium python 中做到这一点

谢谢

3 个答案:

答案 0 :(得分:0)

NoSuchElementException 通常由以下原因之一引起

  • 元素定位器不正确
  • 元素未呈现
  • 页面未呈现或加载
  • 元素在框架内

您可以查看一下,进行调试,然后在此基础上编写您的代码。 :)

答案 1 :(得分:0)

这不是确切的解决方案,但这就是想法

if elem1.is_displayed():
    elem1.click()
else:
    elem2.click()

答案 2 :(得分:0)

我建议您使用 time.sleep(10)nested try block 来捕获您的错误,同时它完成您想要做的事情。例如:

time.sleep(10)

try:
    driver.find_element_by_xpath("/html/body/div[24]/div[1]/div/div/div[3]/div[1]/div/button[1]").click()
except:
    print("button1 could not be found... Now trying to retreive button2")

    try:
        driver.find_element_by_xpath("/html/body/div[24]/div[1]/div/div/div[3]/div[1]/div/button[2]").click()
    except:
        print("button1 nor button2 were not found...")

请注意,time.sleep(10) 会延迟您的代码在此行之后执行任何内容 10 秒,这可以让页面正确加载,以便更轻松地定位元素。