【问题标题】:How to make Selenium WebDriver not to wait for complete load of the page如何使 Selenium WebDriver 不等待页面的完全加载
【发布时间】:2014-02-23 00:46:49
【问题描述】:

我们的一些页面在后端运行第 3 方分析。在我看来,硒正在等待这些过程完成,然后再进行下一步。问题是它需要大约 5-6 分钟。有什么办法可以等待并继续下一步?

我尝试通过单击 JavaScript 来单击按钮(将用户带到具有一些后端进程的页面),这有效,但随后卡在下一步。

谢谢。

【问题讨论】:

  • 这也是我的问题。不是几分钟,但我的测试仍然需要很长时间。即使浏览器仍然可用,WebDriver 也会等待页面加载完成。我知道这在大多数情况下都很有用,但在我的情况下,该页面只是一个“浏览页面”,让我放慢了速度。

标签: java selenium load wait


【解决方案1】:

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

Webdriver 使用 FirefoxProfile 来规避此类风险;仅适用于火狐浏览器。

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

【讨论】:

    【解决方案2】:

    我建议您可以使用代理。 Browsermob 与 selenium 集成得很好,非常好用:

    // 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

    【讨论】:

    • 能否解释一下如何使用新的 pageLoadStrategy Capability 以及它将如何影响 selenium 的使用?
    猜你喜欢
    • 2013-08-31
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 2012-07-07
    • 2019-01-31
    • 1970-01-01
    • 2016-11-14
    • 2015-08-31
    相关资源
    最近更新 更多