箭头函数内的 webdriverio 元素未定义
webdriverio element undefined inside arrow function
我正在从事 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`);
}
}
使用 browser.$(selector) 并使用该元素继续您的测试。我添加了一个方法来检查元素是否已显示。
为什么不使用 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');
}
我正在从事 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`);
}
}
使用 browser.$(selector) 并使用该元素继续您的测试。我添加了一个方法来检查元素是否已显示。
为什么不使用 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');
}