如何使用Driver Wait Before Text在selenium中

我正在尝试使用以下等待条件的驱动程序等待函数。

我想testing一个button上的文字是否等于/匹配注册 ”。 以下是我的代码:

driver.wait(until.elementTextIs(By.css('body > div.site-wrapper > div > div > div.inner.cover > p:nth-child(3) > a.btn.btn-lg.btn-primary'),'Sign Up'),80000) 

但运行后,我得到的错误:

 C:\Users\bob\Documents\testElectron\node_modules\selenium- webdriver\lib\promise.js:2626 Uncaught TypeError: element.getText is not a function 

我试图手动检索button上的文字

 var Button = driver.findElement(By.css('body > div.site-wrapper > div > div > div.inner.cover > p:nth-child(3) > a.btn.btn-lg.btn-primary')); Button.getText().then(function(text){ console.log(text); }); 

它的工作原理,但我想使用的条件等待。 PS:button确实存在,当我运行我使用铬驱动程序的Selenium nodeJS实现运行命令时可见。

函数until.elementTextIs需要一个web元素,但是你正在提供一个定位器。

要么等待元素,然后为文本:

 var buttonLogin = By.css('body > div.site-wrapper > div > div > div.inner.cover > p:nth-child(3) > a.btn.btn-lg.btn-primary'); driver.wait(until.elementTextIs(driver.wait(until.elementLocated(buttonLogin)), 'Sign Up'), 80000); 

或创build一个预期的条件,将等待一个具有所需文本的元素:

 var Condition = webdriver.Condition; until.elementLocatedTextIs = function elementLocatedTextIs(locator, text) { return new Condition( 'for element to be located ' + locator + ' with text ' + text, function(driver) { return driver.findElements(locator).then(function(elements) { return elements.filter(function(element) { return element.getText().then(t => t === text ? element : null); }).then(function(elements) { return elements[0]; }); }); }); }; var buttonLogin = By.css('body > div.site-wrapper > div > div > div.inner.cover > p:nth-child(3) > a.btn.btn-lg.btn-primary'); driver.wait(until.elementLocatedTextIs(buttonLogin), 'Sign Up'), 80000);