我正在尝试编写一个登录网站的节点函数,但无法使其正常工作。我正在尝试使用以下命令等待页面加载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() and 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)