TypeError:driver.isElementPresent不是一个函数

我正在尝试编写一个login到网站的节点function,并且无法正常工作。 我想等待页面加载使用isElementPresent函数,在这篇文章中引用,但它似乎并没有工作。

以下是我到目前为止:

 const webdriver = require('selenium-webdriver') const By = webdriver.By var username = '' var password = '' var timeout = 5000 function FacebookLogin(username, password) { var driver = new webdriver.Builder() .withCapabilities(webdriver.Capabilities.chrome()) .build() driver.get('http://www.facebook.com') driver.wait(function() { return driver.isElementPresent(By.id('email')) }, timeout) var user = driver.findElement(By.id('email')) user.sendKeys(username) var pass = driver.findElement(By.id('pass')) pass.sendKeys(password) pass.submit() driver.sleep(5000) driver.quit() } FacebookLogin(username, password) 

当我运行函数虽然我收到错误TypeError: driver.isElementPresent is not a function 。 这里发生了什么,我错过了什么?

为了与其他Selenium语言绑定保持一致, WebDriver#isElementPresent()WebElement#isElementPresent()已被弃用。

如果您使用的是Selenium 3 ,则应尝试使用findElements来确定是否存在元素,如下所示: –

 driver.findElements(By.id('email')).then(found => !!found.length); 

或者,如果你想等待欲望元素的存在,你应该尝试使用webdriver.until ,如下所示:

 const until = webdriver.until; var user = driver.wait(until.elementLocated(By.id('email')), timeout); user.sendKeys(username); 

确保像Selenium和浏览器驱动程序这样的所有依赖项都是安装的,并且使用一个非常简单的例子。

然后你可以用console.log(util.inspect(driver))来检查驱动程序对象上有哪些函数。

如果你的依赖被设置了,那么API可能会稍微改变。 目前的例子在这里https://www.npmjs.com/package/selenium-webdriver使用, until 。 你可能想先尝试一些更接近这个例子的东西。