Nightwatch + Cucumber如何描述通用步骤

时间:2017-02-03 11:43:48

标签: javascript cucumber nightwatch.js

我正在用夜视仪和黄瓜写一些e2e测试。我想要一个泛型步骤。现在,我的步骤定义是这样的:

<html>
  
  <head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

  </head>
    <div id="displayfor">
  <h5>Click on <br>
    "@Html.DisplayFor(model => item.Status)" </h5>
     </div>
  
  <br>
  <br>
  <span id="span">
   <h5>Click on  <br>
     "@Html.DisplayFor(model => item.Status)" </h5> 
  

  </span>
  
  
  </html>

我想要一些像:

 When (/^I click on 'Leave a comment'$/, () => {
    return client
    .click('a[id="leave-comment"]')
  });

但我无法使用.click实现此步骤。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

我没有亲自使用Nightwatch,但找到了适合你的东西。

查看:Nightwatch Custom Commands and Assertions

它将为您提供的功能之一是jqueryClick,这将使您能够执行此操作:

When(/^I click on the link with text "(.*?)"$/, (text) => {
    return client.jqueryClick('*:contains('+text+')');
});

它将所有jQuery Selectors添加到您的库中,使编写自动化变得更容易一些。

答案 1 :(得分:0)

应该做的工作

this.When('I click the "$element" element', (browser, element) => {
     browser.click(element)   
 });

如果您使用页面对象,则需要创建更复杂的功能,但这个功能适用于常见的When I click the ".cssClass.ccsClass2" element

答案 2 :(得分:0)

我找到了这个解决方案。我需要定义元素的类型,我使用了xPath

When (/^I click on  "(.*?)"$/, (text) => {
 return client
    .useXpath()
    .waitForElementVisible('//button[text()="'+text+'"]', 7000)
    .click('//button[text()="'+text+'"]')
    .useCss()
    .pause(1000);
});