我有以下程序可以通过硒来截屏
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检查
我尝试了以上所有步骤来查找该元素,然后单击但没有任何建议。