如何让 Protractor 的部分等待或同步?
How to make parts of Protractor wait or become synchronous?
我在量角器测试中有这样的代码,它转到主页确定我们需要登录然后调用此函数。请注意,我是 运行 在 NODE.js 环境中:
function Login() {
browser.findElement(by.id('ID')).then(function (ele) {
ele.sendKeys('SomeUserName');
browser.findElement(by.id('password')).then(function (ele) {
ele.sendKeys('SomePassword');
browser.findElement(by.partialButtonText('Sign in')).then(function (ele) {
ele.click();
browser.getCurrentUrl().then(function (url) {
expect(url).toBe("http://NextURLAfterClick");
debugger;
});
});
});
});
}
但是我无法在验证 browser.getCurrentUrl()
之前触发点击,所以我得到的是登录页面的 url,I想在点击登录后得到url.
我怀疑这是我对它的异步性质如何工作的误解。
How to make parts of Protractor wait or become synchronous?
您可以等待 url 在 browser.wait()
的帮助下更改:
var urlChanged = function(url) {
return function () {
return browser.getCurrentUrl().then(function(actualUrl) {
return url === actualUrl;
});
};
};
element(by.id('ID')).sendKeys('SomeUserName');
element(by.id('password')).sendKeys('SomePassword');
element(by.partialButtonText('Sign in')).click();
browser.wait(urlChanged("http://NextURLAfterClick")), 5000);
其中 urlChanged
,在 selenium
术语中,是 "Custom Expected Condition"。
我在量角器测试中有这样的代码,它转到主页确定我们需要登录然后调用此函数。请注意,我是 运行 在 NODE.js 环境中:
function Login() {
browser.findElement(by.id('ID')).then(function (ele) {
ele.sendKeys('SomeUserName');
browser.findElement(by.id('password')).then(function (ele) {
ele.sendKeys('SomePassword');
browser.findElement(by.partialButtonText('Sign in')).then(function (ele) {
ele.click();
browser.getCurrentUrl().then(function (url) {
expect(url).toBe("http://NextURLAfterClick");
debugger;
});
});
});
});
}
但是我无法在验证 browser.getCurrentUrl()
之前触发点击,所以我得到的是登录页面的 url,I想在点击登录后得到url.
我怀疑这是我对它的异步性质如何工作的误解。
How to make parts of Protractor wait or become synchronous?
您可以等待 url 在 browser.wait()
的帮助下更改:
var urlChanged = function(url) {
return function () {
return browser.getCurrentUrl().then(function(actualUrl) {
return url === actualUrl;
});
};
};
element(by.id('ID')).sendKeys('SomeUserName');
element(by.id('password')).sendKeys('SomePassword');
element(by.partialButtonText('Sign in')).click();
browser.wait(urlChanged("http://NextURLAfterClick")), 5000);
其中 urlChanged
,在 selenium
术语中,是 "Custom Expected Condition"。