2016-09-18 38 views
1

而不是使用:文档完成RSelenium

Sys.sleep(5) 

等待DOM来加载没有任何等待,等到这个命令

document.readyState 

给予结果"complete"所以DOM就绪

回答

2

Selenium已经通过超时设置的方法实现了对document.readyState的轮询。 RSeleniumsetTimeout方法。增加page load的超时应导致Selenium允许更多时间完成操作。

问题发生在网页未完成加载时。有些网页不断加载,自动延迟。在这种情况下,您可以检查DOM中是否存在元素。

How I can check whether a page is loaded completely or not in web driver?

Selenium WebDriver : Wait for complex page with JavaScript(JS) to load

作进一步讨论。有了RSelenium,你当然可以运行JavaScript例如

remDr$executeScript("return document.readyState == 'complete';") 

对于现代网页的检测时,页面加载被视为已完成可具体问题和解决方案的情况下的问题。

+0

谢谢。其实有一些阿贾克斯电话,我无法预测他们需要多长时间。如果我使用这个'remDr $ executeScript(“return document.readyState =='complete';”)'会等代码完成,否则我会遇到异常问题? – Elen

+0

如果AJAX调用暴露数据,您可以检查是否存在此数据。有一个execute方法的异步版本。它将一直等到它的回调方法被执行。您可以在适当情况下将JavaScript与您的情况一起使用,以等待通话完成。您需要将异步脚本上的超时设置为适当的值。 – jdharrison

+0

我试过使用'setTimeout(type =“page load”,milliseconds = 10000)'并且我已经加载了rselenium库,但它提到'错误:找不到函数“setTimeout”' – Elen