Javascript 在量角器中侦听浏览器事件

Javascript 在量角器中侦听浏览器事件,javascript,selenium-webdriver,protractor,addeventlistener,Javascript,Selenium Webdriver,Protractor,Addeventlistener,在量角器测试中,是否有方法将事件侦听器附加到浏览器事件 我知道量角器是作为一个节点程序运行的,但我很好奇是否有人使用像这样的节点包来实现这一点 如果是的话,请找任何例子。在我看来,以持久精神,不可能。量角器是selenium webdriver上的一个层。Webdriver是一种JSON协议,它发送命令与浏览器通信。这些命令存储在一个承诺队列中,然后异步返回到量角器。然后,您可以使用jasmine的“Expect”关键字进行断言,以检查DOM 如果您仍然需要找到一种方法,请尝试黑客方法: bro

在量角器测试中,是否有方法将事件侦听器附加到浏览器事件

我知道量角器是作为一个节点程序运行的,但我很好奇是否有人使用像这样的节点包来实现这一点


如果是的话,请找任何例子。

在我看来,以持久精神,不可能。量角器是selenium webdriver上的一个层。Webdriver是一种JSON协议,它发送命令与浏览器通信。这些命令存储在一个承诺队列中,然后异步返回到量角器。然后,您可以使用jasmine的“Expect”关键字进行断言,以检查DOM

如果您仍然需要找到一种方法,请尝试黑客方法:

browser.driver.executeScript(“此处是您的JAVASCRIPT代码;”)

然后将此调用包装到browser.wait()中,但我不建议这样做


谢谢你

我知道这是一个老问题,但我只想在这里补充一些信息,也许在问这个问题时它不在那里。正如在问题和评论中所提到的,它是针对webdriver的Javascript实现的,这是一个很好的例子<代码>量角器是
Webdriverjs
的包装器,因此它在这里应该是有效的

您应该能够使用
addEventListener
命令添加任何受支持的浏览器

注意,目前仅在chrome中支持此功能

此外,这是webdriver.js中的一个实验性功能,因此必须添加

var client = WebdriverJS.remote({
    logLevel: 'verbose',
    experimental: true, // <-- enables browser side eventhandling
    desiredCapabilities: {
        browserName: 'chrome'
    }
});
您可以使用
removeEventListener
注销任何已注册的侦听器

正如本文所暗示的,还支持Node.js环境中的事件处理


WebdriverJS从NodeJS EventEmitter对象继承了几个函数

那么它应该是
executeAsyncScript
,但实际上这是一个非常糟糕的想法。为什么需要等待浏览器事件?量角器应该进行端到端测试,用户很可能不知道事件何时到达,除了一些你应该跟踪的视觉指示。
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();