我试图编写登录到网站的节点功能,但无法使其正常工作。我试图等待页面使用加载isElementPresent功能
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。这是怎么回事,我想念什么?
TypeError: driver.isElementPresent is not a function
为了与其他硒语言绑定的一致性, WebDriver#isElementPresent()并WebElement#isElementPresent()已被弃用。
WebDriver#isElementPresent()
WebElement#isElementPresent()
如果您使用Selenium 3,则应尝试使用findElements代替来确定元素是否存在,如下所示:
Selenium 3
findElements
driver.findElements(By.id('email')).then(found => !!found.length);
或者,如果您要等到欲望元素出现,则应尝试使用webdriver.until以下方法:
webdriver.until
const until = webdriver.until; var user = driver.wait(until.elementLocated(By.id('email')), timeout); user.sendKeys(username);