有没有办法在通过硒加载后将一些 js 添加到所有页面中

Is there a way to add some js into all pages after loading via selenium?

本文关键字:添加 js 加载 有没有      更新时间:2023-09-26

我正在努力使用Selenium创建自动化测试。目前,我想在加载后在每个页面/帧中执行一些js代码,以便能够在js中调用一些测试函数。在页面加载后立即执行它并不重要,我只想让它在每个页面上执行。

为了解决这个问题,我编写了自己的WebDriver实现器,它使用委托模式,在调用方法"get"后添加js执行。与我在更改当前帧的 driver.switchTo() 对象的所有方法中添加执行脚本的方式相同。

问题是在单击某些链接/执行某些js代码后页面重新加载的情况。很容易发现在这种情况下,我的脚本不会被执行。

有没有办法使用Selenium WebDriver来覆盖这种行为?

任何想法或技巧都很棒。

你可以让小提琴手在后台运行来代理所有HTTP方法.....在Fiddler,您可以添加一个自定义规则来更改来自服务器的响应(通过插入JS),用于每种特定类型的HTTP调用GET/POST(不包括PNG/IMG等)...我一直这样做..复制难以测试的方案。

我会在服务器端这样做:使用通用servlet扩展所有servlet,该servlet仅在Selenium运行时在js代码之前(在Selenium启动时在服务器上设置静态变量)

我用WebSocket做了类似的事情。在应用程序中创建 WebSocket 服务器。在初始get之后,execute_script打开与服务器的连接。当浏览器移动到新页面时,套接字连接将关闭 - 您可以再次execute_script。整个事情有点复杂,因为您需要检查任何iframe,如果连接失败等,请重试连接。

我能够使它与Firefox,Chrome很好地工作。也应该与边缘/IE一起使用。