achille
achille

Reputation: 315

selenium 'nonetype' object has no attribute 'send_keys'

title='this is the title'

I want to locate with python/selenium, within a web page, this line:

<input id="subject" name="subject" maxlength="50" value="" class="nude error" type="text">

I use this code with python-selenium (under Debian):

title = driver.find_element_by_id("subject").clear()
title.send_keys(title) 

I got the following error:

Traceback (most recent call last):

  File "./basic0", line 49, in <module>
titre.send_keys(title)

AttributeError: 'NoneType' object has no attribute 'send_keys'

note:when the script stops because of this error, the mouse cursor is at the right at place within the web page; but I cannot find a way to send_keys to fill in the input

I also tried:

title = driver.find_element_by_xpath("div[contains(text(),'subject')]")

title = driver.find_element_by_xpath("//form[input/@id='subject']")

title = driver.find_element_by_xpath("//form[input[@name='subject']")

but it does not work; furthermore the mouse cursor is not at the right place.

then I tried a later selenium version:

I completly purge python-selenium package under Debian (which is selenium v. 2.53) then

pip install selenium==3.3.1

This time, when I launch the script it says that geckodriver is missing: so,

wget https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux32.tar.gz

tar -xvzf geckodriver-v0.23.0-linux32.tar.gz

chmod 755 geckodriver (I also tried 777)

mv geckodriver /usr/local/bin/ (so it's in my PATH)

now when I launch the script, here is the error message I got:

Traceback (most recent call last):

  File "./basic0", line 13, in <module>
driver = webdriver.Firefox()

  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 155, in __init__
keep_alive=True)

  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 92, in __init__
self.start_session(desired_capabilities, browser_profile)

  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 179, in start_session
response = self.execute(Command.NEW_SESSION, capabilities)

  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 238, in execute
self.error_handler.check_response(response)

  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 193, in check_response
raise exception_class(message, screen, stacktrace)

selenium.common.exceptions.WebDriverException: Message: connection refuse

firefox window pops-up, and then shutdown when the script stops

Upvotes: 3

Views: 24303

Answers (3)

Lalit
Lalit

Reputation: 11

use this in python. it is working fine

    action = ActionChains(driver)
    EnterMobileNumber = self.driver.find_element(AppiumBy.ID, 'mention locator here')
    action.move_to_element(EnterMobileNumber).click(EnterMobileNumber).send_keys("8888888888").perform()

Upvotes: 1

Khan Saad
Khan Saad

Reputation: 966

if you are able to click in the text box but you are unable to type in there because send_keys is not working and you are in hurry or you want to just click without selecting any element then:

please install this module by typing pip install pyautogui

import pyautogui


#use this line to type something 
pyautogui.typewrite('Anything you wanna type')

#use this line to press any key
pyautogui.press("esc")

[here][1] is the list of keys you can press
Note : If you are going to minimize the windows pyautogui will start typing at the place you currently clicking or when the pyautogui.typewite() is executing and you are on other pages it will start typing on the page you are in rather then typing on webpage.   

Upvotes: 1

Andersson
Andersson

Reputation: 52665

You've assigned method call (clear()) which returns None to title variable while you need to define WebElement and call methods subsequently as

title = driver.find_element_by_id("subject")
title.clear()
title.send_keys("title")

Upvotes: 3

Related Questions