在继续使用新页面之前,Selenium会等待异步资源调用。
实施例
<script src="https://apis.google.com/js/platform.js" async defer></script>
在包含许多外部API的网站上(例如Google Analytics和G +,Facebook和Twitter的分享按钮)。 Selenium花费更多时间等待异步调用,而不是运行测试。
是否有禁用此行为,以便selenium不等待异步外部api调用?
答案 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或闪存(如果这适用于您的情况):