Helo,
my xpath does validate in firePath but when I try to send _key I get an error.
userID = driver.find_elements_by_xpath(\".//*[@id=\'UserName\']\
driver.find_element_by_xpath(".//*[@id='UserName']").send_keys('username')
find_element without s
.
This error occurs when one tries to perform action on list instead of element. I was getting similar error when I was trying to click on button to submit credentials. I found the work around by emulating pressing enter key on keyboard. e.g. find any element on page using xpath/css, etc. and send enter key.
driver.find_element_by_id('test_id').send_keys(Keys.ENTER)
I had the same problem - so I just did:
userID[0].send_keys('username')
Worked for me
Please replace your code with the following code because you like addressing the first component of your list, not whole list.
userID = driver.find_elements_by_ID('username')[0]
userID.send_keys('username')
or delete "s" from find_elements_by_ID such as follow:
userID = driver.find_element_by_ID('username')
userID.send_keys('username')
instead of this:
userID = driver.find_elements_by_xpath(".//*[@id='UserName']")
userID.send_keys('username')
try:
userID = driver.find_element_by_xpath(".//*[@id='UserName']")
userID.send_keys('username')
I had the same issues and that worked for me.
You are getting a List of webElements with driver.find_elements_by_xpath(".//*[@id='UserName']")
which of course not a single element and does not have send_keys()
method. use find_element_by_xpath
instead. Refer to this api doc.
userID = driver.find_element_by_xpath(".//*[@id='UserName']")
userID.send_keys('username')