1
我想要做的是有一个功能,我可以使用它来执行从元素中抓取文本的相同作业,但我想更改要从中拉取文本的定位器在不使用eval的情况下更改元素参考
const firstNameError = by.id('firstNameError');
const lastNameError = by.id('lastNameError');
const dateError = by.id('dateError');
const emailError = by.id('emailAddressError');
this.checkWarning = function(locator) {
return browser.findElement(eval(locator + 'Error')).getText();
};
所以上面,目前的作品,但使用eval函数(我宁愿避免)。所以我调用.checkWarning并传入'firstName',例如它会使用firstNameError const。
我曾尝试推行之类的东西下面,我有定位器的列表,然后我还基于定位器如
const locatorValues =
{
'firstName': 'firstNameError',
'lastName': 'lastNameError',
'date': 'dateError',
'email': 'emailError',
};
this.checkWarning = function(locator) {
return browser.findElement(locatorValues[locator]).getText();
};
但是再次得到那个工作我会ammended访问列表功能必须在它周围包装eval。我们是基于定位器引用我的常量的最佳方法,我会传入.checkWarning?
感谢
你可以尝试找到'窗口[localtor + '错误']'(或如果你不在浏览器上,使用'global'而不是'window') – Arthur
看起来'const'不在'window'上。我错了 – Arthur