守夜人中是否有一种方法可以访问按钮的onClick处理程序代码?

时间:2019-01-03 03:00:10

标签: javascript nightwatch.js

我有一个这样定义的链接:

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

我想检查Nightwatch中的onClick功能代码(可能是字符串),以检查代码中是否包含Hello一词。 console.log中不同的链接可以具有不同的文本。上面的一个有Hello,而另一个可以有Hi。因此,我希望能够检查该代码以检查其中是否包含特定文本。

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

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

1 个答案:

答案 0 :(得分:1)

是的,有! onclick代表您指定的锚点(<a>)上下文中的属性。因此,您可以使用getAttributegetAttributeById

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

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]/);