【问题标题】:Selenium-Webdriver w/ Chai as Promised and Mocha failing to waitSelenium-Webdriver w/ Chai 作为 Promised 和 Mocha 未能等待
【发布时间】:2016-02-12 06:09:00
【问题描述】:

我有一个使用 Chai-as-Promised 和 Mocha 的带有 Selenium-Webdriver 的简单咖啡脚本测试,它应该测试我拥有的一个网页,一旦按下登录按钮,它就会使用 AJAX 调用进行身份验证:

selenium = require 'selenium-webdriver'
chai = require 'chai'
chai.use require 'chai-as-promised'
expect = chai.expect

before ->
  @timeout 10000
  @driver = new selenium.Builder()
    .withCapabilities(selenium.Capabilities.chrome())
    .build()
  @driver.getWindowHandle()

after ->
  @driver.quit()

describe 'Test Login', ->
  beforeEach ->
    @driver.get 'http://DOMAIN/login/'

  it 'submitting login', ->
    @driver.findElement(id: 'email').sendKeys('foo@bar.com')  
    @driver.findElement(id: 'password').sendKeys('foo')
    @driver.findElement(css: '#login-btn').submit()
    expect(@driver.findElement(id: '#login-profile')).to.eventually.be.true
    expect(@driver.getCurrentUrl()).to.eventually.equal 'http://DOMAIN/profile/'

登录页面的工作方式是,一旦您单击登录,就会进行 AJAX 调用,如果登录成功,页面将通过 document.location.href 重定向到 /profile/。

但是,当此脚本运行时,浏览器会打开并转到登录页面,它已正确填写,但一旦单击它就会失败。

我认为正在发生的事情是浏览器没有等待 AJAX 调用和后续重定向的结果,但我认为承诺的整个想法是最终会等到某个超时时间来验证 #login-profile 是否需要现身。

我需要明确添加吗?如果有,怎么做?

【问题讨论】:

    标签: selenium-webdriver coffeescript mocha.js chai-as-promised


    【解决方案1】:

    我能够使用等待语法让它工作:

    @driver.wait(-> driver.isElementPresent selenium.By.id("login-profile"), 10000)

    感谢this post。

    完整测试:

    it 'submitting login', ->
        driver = @driver
        @driver.findElement(id: 'email').sendKeys('foo@bar.com')  
        @driver.findElement(id: 'password').sendKeys('foo')
        @driver.findElement(css: '#login-btn').submit()
        @driver.wait(-> driver.isElementPresent selenium.By.id("login-profile"), 10000)
        expect(@driver.getCurrentUrl()).to.eventually.equal 'http://DOMAIN/profile/'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 2017-02-13
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      相关资源
      最近更新 更多