【问题标题】:How to use a loop in Nightwatchjs如何在 Nightwatchjs 中使用循环
【发布时间】:2018-08-07 16:47:44
【问题描述】:

说实话,我是自动化 js 和 nightwatchjs 的新手,但是在 nightwatchjs 中创建循环存在问题。 任务是在元素不可见时单击按钮,单击后可以随机变为可见。所以,我正在为这个问题苦苦挣扎,如何在 nightwatchjs 的代码中添加 while 循环,因为我的设想如何解决这个问题是一个循环,例如:

while(check for element)
.click('[Our_Button]')

我尝试使用此 nightwatch js while loop 但没有帮助,这是一个错误“运行 clickUntilNotVisible 命令时出错:browser.waitUntil 不是函数” 也许可以在没有循环的情况下使用更好的方法,但我没有找到任何东西。

【问题讨论】:

  • 不要使用别人的代码;它很懒惰,当它出现问题时,您将无法理解它曾经为何或如何工作或现在已损坏。你可以在 Nightwatch.js 中做一个 while 循环。想想退出循环需要满足的条件。设置一个变量来检查该条件。在每个循环结束时,通过检查该条件再次重新设置变量。

标签: javascript loops selenium automated-tests nightwatch.js


【解决方案1】:

您可以尝试使用setIntervalclearIntervalread about them heresetInterval 接受一个函数参数和一个延迟参数,每次经过指定的延迟间隔时都会执行该函数。你甚至可以做到,当你的条件得到满足时,间隔会自动清除as described in this stack overflow answer

使用this,您应该能够检查您的元素并提交点击,直到它出现在您想要的任何时间间隔。请注意,如果它永远不可见,它将永远不会停止执行,因此您可能还需要使用 setTimeout 并延迟一段时间以清除您的间隔或使测试失败。

【讨论】:

    【解决方案2】:

    您可以使用 .perform() 方法,并且可以从内部创建一个函数。像这样的:

    this.api.perform(function (browser, done){
      while (condition) {
        //code block                     
      }
      done();
    })
    

    为我工作。希望这会有所帮助。

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 2013-12-03
      • 2011-05-06
      相关资源
      最近更新 更多