捕捉Selenium Web-driver Json-wire HTTP交互。

问题描述 投票:1回答:1

Selenium Webdriver通过HTTP与任何浏览器进行交互,正如所讨论的那样--。此处.我有一些使用selenium通过Protractor框架在JavaScript中编写的自动测试。

我的用例是,我想用一种干净的方式来记录所有源自我的基于JS的测试用例到浏览器的交互,包括--用户操作模拟和源自测试用例的任何DOM询问。

记录这些交互的最简单方法是什么?

http selenium-webdriver protractor automated-tests e2e-testing
1个回答
0
投票

Protractor是一个包装器,围绕 Webdriverjs 所以你应该能够使用 addEventListener 命令来添加任何支持的浏览器 活动 涵盖了大多数用户操作和DOM查询。

注意,目前只在chrome中支持这个功能

另外,这是webdriver.js中的一个实验性功能,所以必须添加上

var client = WebdriverJS.remote({
    logLevel: 'verbose',
    experimental: true, // <-- enables browser side eventhandling
    desiredCapabilities: {
        browserName: 'chrome'
    }
});

然后注册事件,如

client
    .url('http://google.com')
    .addEventListener('dblclick','#hplogo', function(e) {
        console.log(e.target); // -> 'id("hplogo")'
        console.log(e.type); // -> 'dblclick'
        console.log(e.clientX, e.clientY); // -> 239 524
    })
    .doubleClick('#hplogo') // triggers event
    .end();

您可以使用 removeEventListener 解除任何已注册的监听者的注册。

Node.js环境下的Evenhandling也得到了支持,这一点也暗示了

WebdriverJS inherits several function from the NodeJS EventEmitter object

如果你想同时捕获网络流量,你可以用以下方法来实现 browsermob-proxy

是一个关于 browsermob-proxy 的教程。


0
投票

由于交互是通过HTTP进行的,我能够使用----------------------------------------------------------------捕获HTTP调用。htt流 库.一旦我得到了HTTP调用,我就对HTTP dump进行了消毒,以删除不相关的调用,然后通过定义一个自定义映射,将Protractor代码区域映射到调用上。

© www.soinside.com 2019 - 2024. All rights reserved.