我正在查看此页面,需要免费注册才能登录。在此页面中,我尝试选择“#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
提交
取消