【发布时间】:2016-05-19 16:55:29
【问题描述】:
在我最近的测试中,我需要先登录并在非角度页面上执行一些操作 (https://www.qa.dealertrack.com/default1.aspx) 然后切换到角度页面并完成测试。 在 conf 我有
global.driver = browser.driver;
我的页面对象如下所示:
var LogInPage = function() {
this.loginUrl = 'https://www.qa.dealertrack.com/default1.aspx';
this.id = browser.driver.findElement(by.name('username'));
this.password = browser.driver.findElement(by.name('password'));
this.loginButton = browser.driver.findElement(by.name('login'));
this.logIn = function(id, password) {
// maximize window
driver.manage().window().maximize();
// log in
driver.get('https://www.qa.dealertrack.com/default1.aspx');
this.id.sendKeys(id);
this.password.sendKeys(password);
this.loginButton.click();
}
};
我的测试看起来像:
describe('Sample Test - Log In', function() {
var loginPage = require('../pages/LogInPage.js');
/**
* Disable waiting for AngularJS for none Angular page
*/
beforeEach(function() {
isAngularSite(false);
});
it('logging in', function() {
loginPage.logIn('xxx', 'xxx');
})
})
但是,即使在到达站点之前,量角器也会抛出错误 NoSuchElementError: no such element: Unable to locate element:{'method':'name','selector':'username'}
但是当我注释掉所有元素变量和相关行时,只剩下了
driver.get(this/loginUrl);
成功了。为什么 browser.driver.get 可以工作,而 browser.driver.findElement 不行?
这是我在 Stackoverflow 上的第一个问题。谢谢大家!!
【问题讨论】:
-
检查这个:github.com/angular/protractor/issues/51 如果您在非角度应用程序上使用量角器,请使用:browser.ignoreSynchronization=true;
标签: selenium-webdriver protractor