Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
Ask Question
so I'm trying to make this bot with selenium but when I'm trying to use the send keys func it doesn't work
I'm stuck on it for hours and I cant seem to find to solve the problem please if anyone has any idea I beg you to help me thanks.
print(driver.title)
tos = driver.find_element("xpath", '//*[@id="pop"]/button')
tos.click()
time.sleep(5)
name = driver.find_element("ID", "inpNick")
time.sleep(5)
name.send_keys('baby')
time.sleep(50)
driver.quit()
Traceback (most recent call last):
File "c:\Users\SexiKiller41\Downloads\a\catchno1se.py", line 17, in <module>
name = driver.find_element("ID", "inpNick")
File "C:\Users\SexiKiller41\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\selenium\webdriver\remote\webdriver.py", line 861, in find_element
return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"]
File "C:\Users\SexiKiller41\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\selenium\webdriver\remote\webdriver.py", line 444, in execute
self.error_handler.check_response(response)
File "C:\Users\SexiKiller41\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\selenium\webdriver\remote\errorhandler.py", line 249, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: invalid locator
(Session info: chrome=107.0.5304.122)
Stacktrace:
Backtrace:
Ordinal0 [0x0039ACD3+2075859]
Ordinal0 [0x0032EE61+1633889]
Ordinal0 [0x0022B7BD+571325]
Ordinal0 [0x0025A745+763717]
Ordinal0 [0x0025AE1B+765467]
Ordinal0 [0x0028D0F2+970994]
Ordinal0 [0x00277364+881508]
Ordinal0 [0x0028B56A+963946]
Ordinal0 [0x00277136+880950]
Ordinal0 [0x0024FEFD+720637]
Ordinal0 [0x00250F3F+724799]
GetHandleVerifier [0x0064EED2+2769538]
GetHandleVerifier [0x00640D95+2711877]
GetHandleVerifier [0x0042A03A+521194]
GetHandleVerifier [0x00428DA0+516432]
Ordinal0 [0x0033682C+1665068]
Ordinal0 [0x0033B128+1683752]
Ordinal0 [0x0033B215+1683989]
Ordinal0 [0x00346484+1729668]
BaseThreadInitThunk [0x7753FEF9+25]
RtlGetAppContainerNamedObjectPath [0x77D37BBE+286]
RtlGetAppContainerNamedObjectPath [0x77D37B8E+238]
[Done] exited with code=1 in 9.895 seconds
I was trying to enter text to an input on a website
driver.find_element(By.ID, "inpNick")
Also, no need to add delays between locating element and clicking it or sending keys to it.
Delays are meaningful before locating the element to make the element rendered on the page.
It is much better to use WebDriverWait
expected_conditions
explicit waits than hardcoded sleeps.
Improved, your code can be as following:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
print(driver.title)
wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="pop"]/button'))).click()
wait.until(EC.visibility_of_element_located((By.ID, "inpNick"))).send_keys('baby')
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.