2016-11-01 43 views
5

我有我使用量角器测试登录功能,它看起来像这样:Angular不可用时,如何等待一个元素与量角器可见?

var config = require("../helpers/config.js"); 

var login = function() { 
    browser.driver.get(config.dsp.url); 
    browser.driver.findElement(by.name("userName")).sendKeys(config.dsp.user); 
    browser.driver.findElement(by.name("password")).sendKeys(config.dsp.password); 
    return browser.driver.findElement(by.name("submit")).click().then(function() { 
     return browser.driver.wait(function() { 
      return browser.driver.isElementPresent(browser.driver.findElement(by.className("sample-class-name"))); 
     }, 360000); 
    }); 
} 

module.exports = login; 

我不能使用任何量角器具体挂钩的,因为角度不这个页面上使用,所以我必须使用底层webdriver API。问题是,我似乎无法弄清楚如何使用这个包装的web驱动程序对象来等待一个元素可见。任何帮助,将不胜感激。

+0

当我运行这个测试我得到的错误是类型错误:“无效的定位”为browser.driver.isElementPresent。 –

+1

如果Angular不存在,为什么不简单地用'browser.ignoreSynchronization = true;'禁用同步? –

+0

好问题。只要登录完成,角就会出现。我只需要让用户通过非角度登录页面。 –

回答

5

尝试从底层驱动预期的条件:

var config = require("../helpers/config.js"); 
var until = require('selenium-webdriver').until; 

var login = function() { 
    var driver = browser.driver; 

    driver.get(config.dsp.url); 
    driver.findElement(by.name("userName")).sendKeys(config.dsp.user); 
    driver.findElement(by.name("password")).sendKeys(config.dsp.password); 
    driver.findElement(by.name("submit")).click(); 

    return driver.wait(until.elementLocated(by.css(".sample-class-name")), 10000) 
     .then(e => driver.wait(until.elementIsVisible(e)), 10000); 
} 

module.exports = login; 
+0

谢谢。这是我正在寻找的。 –

+0

谢谢,对我也一样! – afaraut

相关问题