无效的定位器错误
我试图在页面对象样式中重写我的testing,但出现了一些问题。
我使用类选项卡,这是我的代码的一部分:
var World = require('../support/world.js'); const isAllAjaxRequests = require('../scripts/util').isAllAjaxRequests; const isElementLocatedAndVisible = require('../scripts/util').isElementLocatedAndVisible; module.exports.Tab = class Tab { constructor(data) { this.name = "Base"; this.locators = { 'nextStepIsLocked': {xpath: '//md-tab-item[@aria-selected="true"]//div[@class="cc-status red"]'}, 'isActiveTab': {xpath: '//md-tab-item[@aria-selected="true"]//span[text()="'+ data + '"]'} } } waitForElement(bySelector) { var driver = World.getDriver(); var self = this; //var bySelector = self.locators[bySelector]; return driver.wait(isAllAjaxRequests(driver), waitTimeOut).then(() => { //console.log(bySelector) return driver.wait(isElementLocatedAndVisible(bySelector), waitTimeOut); }); } tabIsOpen(tabName) { var driver = World.getDriver(); var self = this; var bySelector = By.xpath('//md-tab-item[@aria-selected="true"]//span[text()="'+ tabName + '"]'); return self.waitForElement(bySelector); } }
在util中的代码:
exports.isElementLocatedAndVisible = function isElementLocatedAndVisible(driver, bySelector) { return new Condition('element is located and visible', function(driver) { console.log(bySelector) return driver.findElements(bySelector).then((arr) => { if (arr.length > 0) { return arr[0].isDisplayed(); } else { return false; } }); }); };
我试图用在我的testing中:
this.Then(/^Tab "([^"]*)" is open$/, function (tabName) { this.createTab(tabName); //var bySelector = tab.getLocator(isActiveTab); return tab.tabIsOpen(tabName); });
但我收到了一个Invalid Locator error
。 通过debugging打印我看到当我的代码转到bySelector
函数时,我错过了bySelector
值。 这是undefiened
。 我做错了什么?
我怀疑这只是缺less一个参数引起的问题。
在以下行中:
return driver.wait(isElementLocatedAndVisible(bySelector), waitTimeOut);
添加driver
对象作为第一个参数,然后通过bySelector
,如下所示:
return driver.wait(isElementLocatedAndVisible(driver, bySelector), waitTimeOut);
function定义如下:
function isElementLocatedAndVisible(driver, bySelector)
所以,期待driver
对象与bySelector
driver
一起