YasserKhalil
YasserKhalil

Reputation: 9568

Element not interactable with Selenium Excel VBA when using SendKeys

I am trying to login to a site and I am using FindElementById. In the following code the first part of using SendKeys works well but when trying to use the same technique for the password field, I get an error message which tells me that the element is not interactable

Sub Test()
Dim bot As New WebDriver

With bot
    .AddArgument "--disable-notifications"
    .Start "Chrome", "https://www.excelforum.com/excel-programming-vba-macros/"
    .Get "/"
    
    .FindElementById("navbar_username").SendKeys "username"
    .FindElementById("navbar_password").SendKeys "password"
    '.FindElementByName("vb_login_password").SendKeys "password"
    Stop
End With
End Sub

Upvotes: 2

Views: 4787

Answers (3)

undetected Selenium
undetected Selenium

Reputation: 193308

You were pretty close. The Password field with id attribute as navbar_password is having the property:

style="display: none;"

So you won't be able to interact with the element.


To send a character sequence both to the User Name and Password field you can use either of the following Locator Strategies:

  • Using FindElementById():

    .FindElementById("navbar_username").SendKeys "username"
    .FindElementById("navbar_password_hint").SendKeys "password"
    
  • Using FindElementByCss():

    .FindElementByCss("input#navbar_username").SendKeys "username"
    .FindElementByCss("input#navbar_password_hint").SendKeys "password"
    
  • Using FindElementByXPath():

    .FindElementByXPath("//input[@id='navbar_username']").SendKeys "username"
    .FindElementByXPath("//input[@id='navbar_password_hint']").SendKeys "password"
    

References

You can find a couple of revelant discussions in:

Upvotes: 2

Whizdom Trainings
Whizdom Trainings

Reputation: 61

This happens when the element state is not clickable. You have to use webdriver wait property and make sure that element state is clickable

 WebDriverWait wait= new WebDriverWait(driver, 10);
    WebElement e= wait.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath_of_element")));
    e.click();

Upvotes: 1

Raghavendra Phayde
Raghavendra Phayde

Reputation: 63

Try referring this webpage

The page you are trying to access has added a web element over another web element. i.e web element of id navbar_password_hint over web element of id navbar_password. Try referring above link to solve your problem.

Upvotes: 1

Related Questions