当前位置: 首页 > 知识库问答 >
问题:

在Selenium中如何在WebDriver加载页面之前“executescript”?

尚声
2023-03-14

我想用nodejs中的webdriver来控制一个使用ajax的网站,特别是它总是对服务器有http请求。

我还试图通过按浏览器窗口上的ESC来停止连接。之后,driver.executescript似乎可以立即运行。但我在WebDriver API中没有找到类似window.stop()的函数。

那么有没有办法解决这个问题呢?任何一种都可以,比如:

  1. 无论页面是否加载,立即运行executescript
  2. 类似driver.browser.stop()的webdriver api可以停止页面中的所有活动连接。
const WebDriver = require('selenium-webdriver')

const driver = new WebDriver.Builder()
.withCapabilities(
  WebDriver.Capabilities.firefox()
  .set('webdriver.load.strategy', 'unstable')
).build()

driver.get('https://wx.qq.com/')

driver.executeScript('return "99% will be blocked, 1% luck to return"')
.then(function (ret) {console.log(ret)})

https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/4993 https://w3c.github.io/webdriver/webdriver-spec.html#page-load-strategies-1

其他链接也有同样的问题:http://grokbase.com/t/gg/webdriver/1263dbyws6/how-to-click-stop-button-or-equality

共有1个答案

乐宜民
2023-03-14

我认为,如果不使用隐式时间,驱动程序就不会等到加载之后才可以执行脚本。

如果这不起作用,你可以尝试使用自己的计时器。检查doc状态是否就绪,如果超时后还未就绪,则手动停止它(通过JS)并运行脚本。

 类似资料:
  • 我尝试遵循return((JavascriptExecutor)driver.executescript(“return document.readystate”).equals(“complete”); 但它不起作用 基本上,上面的命令不能识别以下操作[testng]1535139249496 addons.productaddons信息发送请求到:https://aus5.mozilla.or

  • 问题内容: 在我的手机网站上。我一直在尝试加载Adsense Mobile广告,但是在页面加载后,它们继续占据整个页面。 我确实发现,如果我禁用了ajax,则该页面将与广告一起很好地加载。这仅在我加载的第二页上有效,因为我单击了带有标签的链接… 这样可以使下一页完美加载。 问题 :由于启用了Ajax,我认为adsense广告会覆盖加载的第一页。 基本上我页面的第一部分是这样的… 我确实尝试禁用代码

  • 我正在刮一个网站,出于某种原因需要15秒加载,但我需要的元素在前5秒加载。 null 我能做点什么吗?谢谢你。

  • 我们正在尝试找到一个网站的Selenium WebDriver的页面加载时间。我们想要得到页面加载时间的多个屏幕/网页在网站,如登录和登录后,主屏幕等。 我们的driver.get()调用是针对登录URL的,

  • 问题内容: 我正在尝试将MutationObserver设置为在加载时观察页面突变。 为此,应在页面加载之前配置MutationObserver。 使用selenium-chromedriver,找不到为此目的注入JS的方法。 我知道chrome扩展程序可以做到这一点,但扩展程序无法在无头模式下工作。 那就是问题所在。 问题答案: 通过调用DevTool API可以实现

  • 我正在使用Python 2.7与火狐的硒网络驱动程序,我有一个问题,我不能解决或在互联网上找到解决。我的任务是打开大约10k个网页(adsl路由器Web界面 - 通过IP地址)并上传新固件。我写了代码,但为了完成它,我必须学习如何使硒webdriver不要像永远一样等待页面加载,而是等待2分钟(这是新固件上传所需的时间),然后继续下一步。我以为我让它永远等待(等待路由器重新连接 - 速度慢得多,但