我正在尝试编写一个登录到网站的节点功能,并且无法使其正常工作.我试图等待页面加载使用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不是一个函数.这里发生了什么,我错过了什么?
解决方法
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);
或者如果你想等到欲望元素出现,你应该尝试使用如下的webdriver.until
: –
const until = webdriver.until; var user = driver.wait(until.elementLocated(By.id('email')),timeout); user.sendKeys(username);