i started using selenuim, node js
it was working all perfect so far, sudenly the same script is throwing and error
"unhandled promise rejection warning element not interactable"
i tried setting wait, until and nothing
<script>
const {Builder, By, Key, until, wait } = require('selenium-webdriver');
var driver = new Builder()
.forBrowser('chrome')
.build();
driver.manage().window().maximize()
driver.get('')
driver.findElement(By.id('username')).sendKeys('test@emal');
driver.findElement(By.id('password')).sendKeys('passowrod');
driver.findElement(By.className('acceder')).click();
driver.quit();
</script>
i search all over but all examples simply did not work for me, due that they dont have that issues,..
;index=4&list=PLA4JPGpQHctT__mDO9EHvOrWVW0Hkf5Mk
i started using selenuim, node js
it was working all perfect so far, sudenly the same script is throwing and error
"unhandled promise rejection warning element not interactable"
i tried setting wait, until and nothing
<script>
const {Builder, By, Key, until, wait } = require('selenium-webdriver');
var driver = new Builder()
.forBrowser('chrome')
.build();
driver.manage().window().maximize()
driver.get('http://www.google./testsite')
driver.findElement(By.id('username')).sendKeys('test@emal');
driver.findElement(By.id('password')).sendKeys('passowrod');
driver.findElement(By.className('acceder')).click();
driver.quit();
</script>
i search all over but all examples simply did not work for me, due that they dont have that issues,..
https://www.youtube./watch?v=C6qQojzN7bE&index=4&list=PLA4JPGpQHctT__mDO9EHvOrWVW0Hkf5Mk
boton acceder
. However, there are multiple elements with that class name, and therefore you will need to use the xpath()
method. Try replacing By.className('acceder'))
with By.xpath("(//button[@class='boton acceder'])[1]")
. I cannot predict which index will do the trick, you'll have to try it yourself.
– Joao Pereira
Commented
Feb 25, 2019 at 17:24
getText()
function, an empty string is returned, even if the object exists. By the way, the consideration I made about multiple objects with the same class name, also exists with the ID, since 2 elements share both the username
and password
IDs.
– Joao Pereira
Commented
Feb 25, 2019 at 20:50
These locators worked for me for the url you shared:
driver.findElement(By.xpath('(//input[@id="username"])[2]')).sendKeys('test@emal');
driver.findElement(By.xpath('(//input[@id="password"])[2]')).sendKeys('passowrod');
driver.findElement(By.xpath('(//button[@class="boton acceder"])[2]')).click();
The reason for using 2nd index for all the elements is that the same elements are in HEADER which are hidden.
Note: I tried these in python, so please adjust if any string syntax error.
The problem: While running the automation, the window size is is not fully presented on screen so some elements are rendered outside of the visible area in your configured chrome web driver.
The solution would be using this snippet in your base configuration:
browser.driver.manage().window().maximize();