如何让Selenium WebDriver不要等待页面的完全加载

时间:2014-02-23 00:46:49

标签: java selenium load wait

我们的部分网页在后端运行第三方分析。在我看来,在进入下一步之前,硒正在等待这些过程完成。问题是它需要大约5-6分钟。有没有办法登上这个等待并继续下一步?

我尝试点击按钮(将用户带到具有一些后端进程的页面),点击JavaScript,这样就可以了,但是它会在下一步停留。

感谢。

2 个答案:

答案 0 :(得分:3)

在webdriver上甚至可以在页面加载上单击元素;默认情况下,webdriver等待整个页面加载,然后选择元素。链接和文本是可见的,但它们不可点击;但是,它在页面加载时适用于Selenium IDE拾取元素。

Webdriver利用 FirefoxProfile 来避免此类风险;它仅适用于Firefox浏览器。

FirefoxProfile fp = new FirefoxProfile();
fp.setPreference("webdriver.load.strategy", "unstable");
driver = new FirefoxDriver(fp);

答案 1 :(得分:0)

我建议您可以使用代理。 Browsermob与硒很好地结合,非常容易使用它:

// start the proxy
ProxyServer server = new ProxyServer(4444);
server.start();

// get the Selenium proxy object
Proxy proxy = server.seleniumProxy();

// This line will automatically return http.200 for any request going to google analytics
server.blacklistRequests("https?://.*\\.google-analytics\\.com/.*", 200);

// configure it as a desired capability
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.PROXY, proxy);

// start the browser up
WebDriver driver = new FirefoxDriver(capabilities);

编辑: 我刚刚发现,在selenium 2.40中,实现了pageLoading策略。

  
      
  • 在Firefox中实现了pageLoadingStrategy功能。
  •   
partial interface WebDriver {
    const DOMString CONSERVATIVE = 'conservative';
    const DOMString NORMAL = 'normal';
    const DOMString EAGER = 'eager';
    const DOMString NONE = 'none';
};

reference