一尘不染

TypeError:driver.isElementPresent不是一个函数

selenium

我试图编写登录到网站的节点功能,但无法使其正常工作。我试图等待页面使用加载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。这是怎么回事,我想念什么?


阅读 257

收藏
2020-06-26

共1个答案

一尘不染

为了与其他硒语言绑定的一致性,
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);
2020-06-26