nightwatch 中有没有办法访问按钮的 onClick 处理程序代码?

Is there a way in nightwatch to get access to a button's onClick handler code?

我有一个 link 定义如下:

<a onclick={() => {console.log('Hello')}} />

我想检查 Nightwatch 中的 onClick 函数代码(可能是一个字符串),检查代码中是否包含单词 Hello。不同的 link 可以在 console.log 中有不同的文本。上面的一个有 Hello 而另一个可以有 Hi。所以我希望能够检查该代码以检查哪个具有特定文本。

我试过这样做,但是 result 变量不包含 onClick 处理程序代码:

browser.element('xpath', 'SOME_XPATH', function(result) {
    console.log('RESULT OBJECT: ', result);
});

是的,有! onclick 表示您指定的锚点上下文中的属性 (<a>)。所以你可以使用 getAttribute, or getAttributeById

扩展您的代码,它应该看起来像这样:

return browser.element('xpath', 'yourXPathSelector', (result) => {
  browser.elementIdAttribute(result.value.ELEMENT, 'onclick', (res) => {
    console.log('RESULT OBJECT: ', res.value);
    // > do your Hi|Hello check here <
  });
});

我认为最短、最懒惰的方法是立即使用 Nightwatch 的 Expect API:

断言验收标准
browser.expect.element('a').to.have.attribute('onclick')
.which.matches(/[Hi|Hello]/);