TypeError: driver.isElementPresent is not a function
Solution 1
If you're using Selenium 3
, you should try using findElements
instead to determine element present or not as below :-
driver.findElements(By.id('email')).then(found => !!found.length);
Or if you want to wait until desire element present, you should try using webdriver.until
as below :-
const until = webdriver.until;
var user = driver.wait(until.elementLocated(By.id('email')), timeout);
user.sendKeys(username);
Solution 2
Make sure that all of the dependencies like Selenium and the browser driver are installed and working using a very minimal example.
Then you can check what functions are on the driver object with console.log(util.inspect(driver));
If your dependencies are set up, it may be that the API changed slightly. The current example here https://www.npmjs.com/package/selenium-webdriver uses until
. You may want to try something closer to that example first.
jmreicha
DevOps, SRE, Docker, Kubernetes, Python, automation. Blog: https://thepracticalsysadmin.com
Updated on June 18, 2022Comments
-
jmreicha almost 2 years
I am attempting to write a node function that logs into a website and am having trouble getting it to work. I am trying to wait for the page to load using the
isElementPresent
function, referenced in this post but it doesn't seem to be working.Here's what I have so far:
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)
When I run the function though I receive the error
TypeError: driver.isElementPresent is not a function
. What is going on here and what am I missing?