2

我正在使用 selenium 创建自动化测试。目前我想在加载后在每个页面/框架中执行一些 js 代码,以便能够在 js 中调用一些测试函数。在页面加载后立即执行它并不是必需的,我只想确保它会在每个页面上执行。

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

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

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

任何想法或技巧都很棒。

4

3 回答 3

1

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

于 2014-12-03T18:20:57.523 回答
0

我会在服务器端执行此操作:使用仅在 Selenium 运行时添加 js 代码的通用 servlet 扩展所有 servlet(在 selenium 启动时在服务器上设置静态变量)

于 2012-05-23T12:38:51.483 回答
0

我使用WebSocket. 在应用程序中创建一个 WebSocket 服务器。在 initial 之后getexecute_script这将打开与服务器的连接。当浏览器移动到新页面时,套接字连接关闭 - 您可以再次执行脚本。整个事情有点复杂,因为您需要检查任何iframes,如果连接失败则重试连接等。

我能够很好地使用 Firefox、Chrome。也应该与 Edge/IE 一起使用。

于 2016-08-26T10:18:48.447 回答