selenium python send_key error: list object has no attribute
Question:
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']")
userID.send_keys('username')
AttributeError: ‘list’ object has no attribute ‘send_keys’
Can someone toss me a bone please?
Answers:
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')
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
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.
driver.find_element_by_xpath(".//*[@id='UserName']").send_keys('username')
find_element without s
.
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')
I was facing the same problem while using to input for Instagram, tried the time module to sleep for 2 seconds then it started working for me. Problem was that before loading the website bot starts to find that path and report errors.
import time
time.sleep(2)
when we select multiple element we type elements (s), its return a list. that have no "send_keys" single element have no s. that have "send_keys"
from selenium import webdriver
from selenium.webdriver.common.by import By
userID = driver.find_elements( By.XPATH, "//div[@title='Username']")
userID[0].send_keys('username')
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']")
userID.send_keys('username')
AttributeError: ‘list’ object has no attribute ‘send_keys’
Can someone toss me a bone please?
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')
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
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.
driver.find_element_by_xpath(".//*[@id='UserName']").send_keys('username')
find_element without s
.
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')
I was facing the same problem while using to input for Instagram, tried the time module to sleep for 2 seconds then it started working for me. Problem was that before loading the website bot starts to find that path and report errors.
import time
time.sleep(2)
when we select multiple element we type elements (s), its return a list. that have no "send_keys" single element have no s. that have "send_keys"
from selenium import webdriver
from selenium.webdriver.common.by import By
userID = driver.find_elements( By.XPATH, "//div[@title='Username']")
userID[0].send_keys('username')