【问题标题】:Wait untill Page_loaded in selenium等到页面加载硒
【发布时间】:2021-02-27 19:30:03
【问题描述】:

我是 selenium 的新手并正在构建一个项目(python + selenium)。我在time.sleep(10) 之类的代码中插入了自定义等待 我试图暗示的是代码应该被阻止,直到页面完全加载并且在按钮点击后相同。 我读过几篇像

implicit wait 
explicit wait
wait untill an element appears up (select by id or something else )

在页面完全加载之前,有什么方法可以阻止代码。 (我没有任何条件可以等到)。我不能使用隐式等待或显式的东西,因为没有完成加载页面的固定时间

  def run(self):
     self.browser.get('url')
     # here it should wait untill the page has been loaded fully
     time.sleep(10)
     element = self.browser.find_element_by_css_selector('some-css-selector')

【问题讨论】:

  • 它会自动等待现在有什么问题?
  • 问题是,我写了一个语句 find_element_by_css_selector() 并且它抛出了一个异常 noSuchElementFound 并且当我用 time.sleep(20) 结束该代码时,它运行良好
  • 请看分析器

标签: selenium selenium-chromedriver


【解决方案1】:

https://www.selenium.dev/documentation/en/webdriver/page_loading_strategy/

normal 这会使 Selenium WebDriver 等待整个页面 已加载。当设置为 normal 时,Selenium WebDriver 等待直到加载 返回事件火。

默认情况下,如果没有提供,则将 normal 设置为浏览器。

所以这是自动完成的,因为默认情况下页面加载策略是正常的,

但它不会考虑在页面加载后加载的异步元素,如果您想显式等待某些异步元素,请使用显式等待:

WebDriverWait(driver,15).until(EC.presence_of_all_elements_located(By.CSS_SELECTOR,"some-css-selector"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多