首页 > 解决方案 > Selenium Python - 这不是重复的问题..实际上无法正确定位元素

问题描述

我有下面的程序通过 selenium 截屏

    from selenium import webdriver
    from selenium.common.exceptions import TimeoutException
    from selenium.webdriver.common.keys import Keys
    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(executable_path='C:\Downloadsnew\chromedriver_win32\chromedriver.exe')
    driver.maximize_window()
    #driver.implicitly_wait(40)
    driver.get("https://now.com/welcome.do")
    #element=WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.id,'user_name')))
    elem = driver.find_element_by_id("user_name")
    elem.send_keys("user1")
    elem = driver.find_element_by_id("user_password")
    elem.send_keys("password1")
    elem.send_keys(Keys.RETURN)
    elem.click()
    WebDriverWait(driver, 100).until(EC.url_changes(driver.current_url))
    element=WebDriverWait(driver, 10).until(EC.presenceOfElementLocated((By.XPATH,"//div[@class='sn-widget-list-title'][contains(.,'Dashboards')]"))).click()
   print(element)

当我执行它应该使用用户名和密码登录,然后它会打开另一个页面,然后我需要点击一个显示仪表板的链接。

现在发生的情况是它成功登录,然后进入主页后,它抛出错误

    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
  (Session info: chrome=71.0.3578.98)

所以我不确定它说的是哪个元素过时并且它的仪表板点击不起作用......有人可以提出什么问题......所以我使用了一个名为 truepath 的 chrome 扩展来了解该仪表板链接的确切 xpath ......它说像

//div[@class='sn-widget-list-title'][contains(.,'Dashboards')]

当我使用另一个名为 Element locator 的工具时,我得到了如下的 xpath

//*[@id="b9169d55873212001ac119fa84e3ece3"]/div[1]/div[1]

当我对该仪表板链接进行正常检查时,然后复制选择器和 xpath,我得到这样的结果:

//*[@id="b9169d55873212001ac119fa84e3ece3"]/div/div

CSS选择器:

#b9169d55873212001ac119fa84e3ece3 > div > div

这是该仪表板的 html 检查

在此处输入图像描述

我尝试了以上所有方法来定位该元素,然后单击但没有提出任何建议。

标签: pythonseleniumscreenshot

解决方案


推荐阅读