我正在从事webdriverio自动化项目。我有以下代码。
waitUntilVisible(element, maxTimeOut) {
console.log("********** PARAMETER ************" + element);
const testelement = $('#identifierId');
browser.waitUntil(testelement => {
console.log("************** INSIDE *********" + testelement);
return testelement.isDisplayed();
}, maxTimeOut, 'Wait for element to be visible');
}
testelement始终返回未定义。有人可以建议我出什么事了。
/**
* Check if the given element is (not) visible
* @param {String} selector Element selector
* @param {String} falseCase Check for a visible or a hidden element
*/
const isDisplayed = async (selector, falseCase) => {
let elem = await browser.$(selector);
const displayed = await elem.isDisplayed();
if (falseCase) {
expect(displayed).to.not
.equal(true, `Expected element "${selector}" not to be displayed`);
} else {
expect(displayed).to
.equal(true, `Expected element "${selector}" to be displayed`);
}
}
使用浏览器。$(选择器),并使用该元素继续进行测试。我添加了一种方法来检查元素是否为isDisplayed。
为什么不使用waitForDisplayed?
但是,如果要使用自己的-调用函数时会遇到问题
waitUntilVisible(element, maxTimeOut) {
console.log("********** PARAMETER ************" + element);
//this is never called due same name of variable in fn waitUntil
const testelement = $('#identifierId');
可能的解决方案:
// if you want to pass selector
waitUntilVisible(elementSelector, maxTimeOut) {
console.log("********** PARAMETER ************" + elementSelector);
browser.waitUntil(testelement => {
console.log("************** INSIDE *********" + elementSelector);
return $(elementSelector).isDisplayed();
}, maxTimeOut, 'Wait for element to be visible');
}
// if you want to pass WebDriverIO object
waitUntilVisible(element, maxTimeOut) {
console.log("********** PARAMETER ************");
browser.waitUntil( () => {
console.log("************** INSIDE *********");
return element.isDisplayed();
}, maxTimeOut, 'Wait for element to be visible');
}