无效的定位器错误

我试图在页面对象样式中重写我的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一起