Javascript 如何在Selenium中与就绪状态为Interactive的页面交互
这是一个奇怪的应用程序,在使用SeleniumWebDriver自动化这个应用程序时,我面临着很多挑战 问题 问题是即使在页面加载完成之后,页面的document.readyState状态始终将该值显示为交互式,因此,Selenium在执行给定操作后不会将控件发送到下一行,并一直等待页面document.readyState更改为完成,而这从未发生过 是否有任何方法可以强制Selenium不要等待页面document.readyState更改完成?我知道这是Selenium的默认行为,但是有什么可以做的吗 解决方案,但面临其他挑战:- 对于常见的操作,如单击…我知道我们可以使用Javascript单击而不是Selenium单击,JS单击不会等待页面状态。我正在使用JS点击,这是非常好的工作,但现在有一个场景,点击链接,我需要切换到新窗口。我不认为JS中有任何函数允许我们切换到新窗口,现在我被迫使用Selenium切换到新窗口功能,这是由于上述问题而卡住的。我是否可以将页面document.readyState更改为强制完成 忘了提到这个问题只在IE中出现,它在Chrome中运行得很好。 谢谢你的帮助。谢谢。可能相关。如果IE中有一个信息栏,则它涉及到Javascript 如何在Selenium中与就绪状态为Interactive的页面交互,javascript,selenium,Javascript,Selenium,这是一个奇怪的应用程序,在使用SeleniumWebDriver自动化这个应用程序时,我面临着很多挑战 问题 问题是即使在页面加载完成之后,页面的document.readyState状态始终将该值显示为交互式,因此,Selenium在执行给定操作后不会将控件发送到下一行,并一直等待页面document.readyState更改为完成,而这从未发生过 是否有任何方法可以强制Selenium不要等待页面document.readyState更改完成?我知道这是Selenium的默认行为,但是有什么
readyState
不转换为complete
现在解决此问题的正确方法是将pageLoadStrategy
功能设置为“eager”值。至少在.NET绑定中,这可以通过将InternetExplorerProptions.PageLoadStrategy
的值设置为InternetExplorerPageLoadStrategy.Eager
来实现。其他语言绑定应参考其文档,了解如何为IE驱动程序设置所需的功能。此外,请务必理解,这可能会对在导航后等待页面加载产生副作用,因此请务必确保您正确地等待结果页面上的元素
即使您的问题不是由信息栏引起的,将页面加载策略更改为“急切”可能仍然适用于您。在Java中,它应该是这样工作的:
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(CapabilityType.PAGE_LOAD_STRATEGY, "eager");
WebDriver driver = new InternetExplorerDriver(capabilities);
您能够编辑您正在测试的应用程序的代码吗?不,您没有访问代码的权限。这是一个客户端应用程序,但它并不适用于我的案例,我告诉大家:我在javascript错误和selenium测试方面遇到了一些问题。当我修复它们时,selenium测试运行。在页面加载时执行大量js时,我也遇到了您描述的问题。在加载所有内容并使selenium等待该元素开始运行多个测试之后,我最终在页面中添加了一些隐藏的html元素。我不认为您可以发布到页面的链接吗?您可以尝试使用
sendKeys()
并向页面发送Esc
键。这将阻止页面加载,但可能会使页面处于错误状态,具体取决于加载的内容。@JeffC页面已加载,只是页面document.readyState属性仍显示为交互式(由于某些内部JS错误而猜测)。我试图发送ESC键,但该值仍然是页面document.readyState属性的交互式值;在Java中,但在Java中似乎没有任何相同的方法。很抱歉响应太晚,但我无法测试上述代码,因为我们无法访问给定的应用程序。我对你的答案投了赞成票,因为它看起来很有希望。谢谢你的帮助。