Selenium:不要等待异步资源

时间:2015-09-05 02:35:55

标签: python unit-testing selenium selenium-webdriver

在继续使用新页面之前,Selenium会等待异步资源调用。

实施例

<script src="https://apis.google.com/js/platform.js" async defer></script>

在包含许多外部API的网站上(例如Google Analytics和G +,Facebook和Twitter的分享按钮)。 Selenium花费更多时间等待异步调用,而不是运行测试。

是否有禁用此行为,以便selenium不等待异步外部api调用?

1 个答案:

答案 0 :(得分:5)

你看到的是page load timeout在行动中。您可以调整它并处理超时异常:

try:
    driver.set_page_load_timeout(5)  # in seconds
except TimeoutException:
    pass

# continue with testing

除此之外,您还可以添加Explicit Wait以等待某个所需的“操作”元素显示,以便您可以在元素出现后立即继续测试。

您还可以通过阻止对某些与您的测试无关的域的请求来优化它,并且不会损害页面呈现并且不会影响您的测试。例如,如果您要阻止Google Analytics请求:

您还可以禁用图片,CSS或闪存(如果这适用于您的情况):