python - Cannot find Twitter element by name using Selenium and Chrome Webdriver -


i'm trying remotely log twitter , tweet using selenium , chrome webdriver can't seem before else want test if can write username , password areas cant that.

here code:

from selenium import webdriver selenium.webdriver.common.keys import keys   driver = webdriver.chrome()  driver.get("https://twitter.com") elem = driver.find_element_by_name("session[username_or_email]") elem.send_keys("test") elem.send_keys(keys.return) 

when try opens command prompt run chromedriver.exe opens chrome window nothing else happens , gives me error message:

traceback (most recent call last):  file "c:\python27\project\auth2.py", line 10, in <module>     elem.send_keys("test")   file "c:\python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line     162, in send_keys     self._execute(command.send_keys_to_element, {'value': typing})   file "c:\python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line   228, in _execute     return self._parent.execute(command, params)   file "c:\python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 165, in execute     self.error_handler.check_response(response)   file "c:\python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 152, in check_response     raise exception_class(message, screen, stacktrace) nosuchwindowexception: message: u'no such window: target window closed\nfrom     unknown error: web view not found\n  (session info: chrome=26.0.1410.64)\n  (driver info:     chromedriver=0.8,platform=windows nt 5.1 sp3 x86)'  

can tell me what's problem , how fix it!

yes, find_element_by_id, find_element_by_xpath or find_element_by_css_selector should used in particular case.

i suspect elem = driver.find_element_by_name("session[username_or_email]") won't work because of square brackets.

for else needs handle square brackets using selenium, using css selector or xpath should easier shown in following example (square brackets in class names in example):

<label class="username js-username">     <span>username or email</span>     <input class="session[username_or_email]" type="text" autocomplete="on" /> </label> 
# suspect won't work? driver.find_element_by_class_name("session[username_or_email]")  # won't work, special meaning of square brackets in css selector driver.find_element_by_css_selector(".session[username_or_email]")  # use these driver.find_element_by_css_selector("[class='session[username_or_email]']") driver.find_element_by_xpath("//*[@class='session[username_or_email]']") # same usual 

Comments