Javascript 如何使用Selenium处理jQuery应用程序的奇怪行为?
我正在处理一个使用jQuery开发的旧应用程序的稳定化。为了稳定它,我添加了一个方法,该方法使用javascript在与元素交互之前检查文档是否准备就绪Javascript 如何使用Selenium处理jQuery应用程序的奇怪行为?,javascript,jquery,selenium,selenium-webdriver,Javascript,Jquery,Selenium,Selenium Webdriver,我正在处理一个使用jQuery开发的旧应用程序的稳定化。为了稳定它,我添加了一个方法,该方法使用javascript在与元素交互之前检查文档是否准备就绪document.readyState==“complete”,ajax调用是否已完成jQuery.active==0 但我仍然看到以下问题- 即使页面上存在元素,SeleniumWebDriver也无法找到它,即使轮询机制设置了一些超时。但是,通过在DOM中签入,我们可以找到相同的元素 UI被扭曲,当WebDriver试图单击某个元素时,它会给
document.readyState==“complete”
,ajax调用是否已完成jQuery.active==0
但我仍然看到以下问题-
元素单击被拦截
。但是,可以手动单击相同的元素jQuery.active==0
时,也会导致jQuery未定义
。然而,若我们通过浏览器控制台执行相同的查询,它将返回正确的结果你能帮我解决这个问题吗?我已经挣扎了一周来稳定这一局面。这个问题有点模糊。然而,最好的稳定方法是让selenium以正确的方式等待元素(取决于您想要做什么)。我们是否可以帮助您解决一个更具体的问题?您是否可以为您正在自动化的页面发布一些HTML,以及您正在运行的Selenium代码?您可以在元素上添加显式等待,运行javascript单击以绕过
元素单击拦截
,切换到iframe
以查找元素等。检查文档。readyState
并不总是查看页面是否已完全加载的最佳做法。对于您遇到的问题,有一些解决方法,但如果没有任何代码或HTML可供参考,我们将无能为力。请尝试将jquery移动到head中,并删除async/defer属性。确保元素不在iframe中,并使用===进行比较,而不是==谢谢@pguardiario,但我不知道如何实现您的语句-尝试将jquery移动到head中并删除async/defer属性。
您能在这方面提供更多帮助吗?换句话说,如果jquery脚本标记在主体中的某个位置或具有async/defer属性属性,只需将其移动到头部并移除这些属性。