了解Selenium Findelement

时间:2015-12-17 05:21:40

标签: selenium

我想了解Findelement的工作原理。

案例1:一旦在DOM中找到它(在页面加载和在浏览器中呈现之前/期间),它是否会对元素起作用

案例2 或者,它仅在页面完全加载时才起作用&渲染?

案例3:或者,它是否在DOM中找到了元素(参见案例1)并且只是等待页面呈现以便它现在可以对元素起作用?

2 个答案:

答案 0 :(得分:0)

FindElement根据程序中定义的隐式和显式等待继续查找元素。它不会等到整个DOM加载完毕。

如果您想等到页面加载完成,请使用pageLoadTimeout:

 driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

这里10代表10秒,直到抛出TimeoutException。

答案 1 :(得分:0)

  • Selenium等到页面将被加载(onLoad事件)之前 执行任何命令(例如getfind_element_by_css_selector)。
    您可以在中禁用此行为 火狐:
   
   from selenium import webdriver

   profile = webdriver.FirefoxProfile()
   profile.set_preference('webdriver.load.strategy', 'unstable')
   driver = webdriver.Firefox(profile)
  • 使用driver.set_page_load_timeout,您可以更改Selenium在加载页面之前应等待的时间。如果在此时间段TimeoutException: Message: Timed out waiting for page load.被抛出后未加载页面。

  • 隐式和显式等待可以改变" "找到元素"的行为功能:
    阅读:http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-and-implicit-waits
    其中一个要点:WARNING: Do not mix implicit and explicit waits. Doing so can cause unpredictable wait times.
    这意味着在使用显式等待之前,如果您已经设置了隐式等待全局' - 首先你需要做的是禁用隐式等待。

长话短说:
默认情况下"找到元素"功能/ Selenium等到页面加载并尝试查找元素。