javascript - TypeError : driver. isElementPresent 不是函数

标签 javascript node.js selenium

我正在尝试编写一个登录网站的 Node 函数,但无法使其正常工作。我正在尝试使用 isElementPresent 函数等待页面加载,在 this post 中引用但它似乎没有用。

这是我目前所拥有的:

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,但是当我运行该函数时。这是怎么回事,我错过了什么?

最佳答案

For consistency with the other Selenium language bindings, WebDriver#isElementPresent() and WebElement#isElementPresent() have been deprecated.

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

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

或者如果你想等到 desire 元素出现,你应该尝试使用 webdriver.until如下:-

const until = webdriver.until;

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

关于javascript - TypeError : driver. isElementPresent 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39736692/

相关文章:

ruby-on-rails - 我应该使用 Selenium 还是 Jasmine 来使用 RSpec 测试 View 文件?

python - Selen重复打印相同的信息

java - 我们可以使用java更新受密码保护的Excel工作表的行和列吗?

java - 如何使用 socket.io 发送二进制数据?

mysql - 如何在 Node.js 中发送多个响应

mysql - 持久的基于时间的队列

javascript - JavaScript 运行时如何工作?

javascript - JQuery 分组跨度

javascript - 在执行任何操作后禁用 Struts 1.2 中的按钮

javascript - jQuery 表单验证在失败时不显示错误