1

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

2 Answers 2

0

Try:

# id instead of ID
name = driver.find_element("id", "inpNick")  

# or
from selenium.webdriver.common.by import By
name = driver.find_element(By.ID, "inpNick")
Sign up to request clarification or add additional context in comments.

Comments

0

Instead driver.find_element("ID", "inpNick") try

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')

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.