我正在查看此頁面,需要免費注冊才能登錄。在此頁面中,我嘗試選擇“#histo-line-chart > g > g.hist-container > g.hist-top-graph > g.hist-spreadlines > g”。def login(): url = "https://www.datagrapple.com/Account/Login" browser = create_browser( r'C:/Users/YOURADDRESS/webdrivers/chromedriver.exe') # change addr when necessary browser.get(url) browser.find_element_by_id('UserName').send_keys('EXIA2018') # valid demo browser.find_element_by_id('Password').send_keys('102938') browser.find_element_by_xpath('//*[@id="loginForm"]/form/fieldset/div[3]/div/button').click() return browserobj_path = '#histo-line-chart > g > g.hist-container > g.hist-top-graph > g.hist-spreadlines > g'WebDriverWait(browser, 60).until(EC.element_to_be_clickable((By.CSS_SELECTOR, obj_path))) # added according to NatalSnowyFox's suggestion. browser.find_element_by_css_selector(obj_path)然后我得到了這個錯誤。selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"histo-line-chart > g > g.hist-container > g.hist-top-graph > g.hist-spreadlines > g"} (Session info: headless chrome=79.0.3945.130)當我以檢查模式將此 css 選擇器粘貼到瀏覽器時,它可以成功找到目標。我正在使用 Python 3.7.6 和 selenium 3.141.0。我已經重新安裝了硒以防萬一。請指導我完成,謝謝你。更新 1根據 NatalSnowyFox 的建議添加了顯式等待代碼,但即使我將超時時間延長到 60 秒也會出現超時錯誤
1 回答

HUX布斯
TA貢獻1876條經驗 獲得超6個贊
您是否嘗試使用 WebDriverWait(driver, time).until(your condition)?也許瀏覽器只是需要時間來定位它,嘗試使用顯式等待。
WebDriverWait(driver, 10).until(EC.visibility_of_element_located(By.CSS_SELECTOR,"your selector"))
取而代之的是“visibilityOfElementLocated”,您可以使用任何其他條件(定位元素的存在、可見性、可點擊元素..等,取決于您的需要)
https://selenium.dev/docs/site/en/webdriver/waits/
添加回答
舉報
0/150
提交
取消