1

Я пытаюсь удаленно войти в твиттер и твит с помощью селена и веб-браузера Chrome, но я не могу его получить, прежде чем я сделаю что-нибудь еще, что я хочу просто проверить, если Я могу писать в области имени пользователя и пароля, но я даже не могу этого сделать.Невозможно найти элемент Twitter по имени с помощью Selenium и Chrome Webdriver

Вот мой код:

from selenium import webdriver 
from 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) 

Когда я пытаюсь это открывает командную строку для запуска chromedriver.exe затем открывает окно хрома, но потом ничего не происходит, и это дает мне сообщение об ошибке:

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

Может ли кто-нибудь сказать мне, в чем проблема, и как исправить это!

+0

я получил его на работу я думаю, я просто нужно использовать 'driver.find_element_by_id' вместо' driver.find_element_by_name' и он работал просто отлично! – Serial

+0

, но теперь им интересно, смогу ли я сделать это, пока не появится окно? – Serial

ответ

0

Да, find_element_by_id, find_element_by_xpath или find_element_by_css_selector следует использовать в данном конкретном случае.

Я подозреваю, что elem = driver.find_element_by_name("session[username_or_email]") не будет работать из-за квадратных скобок.

Для кого-то, кто должен обращаться в квадратные скобки с использованием Selenium, используя селектор CSS или XPath должно быть проще, как показано в следующем примере (квадратные скобки в именах классов в данном примере):

<label class="username js-username"> 
    <span>Username or email</span> 
    <input class="session[username_or_email]" type="text" autocomplete="on" /> 
</label> 
# I suspect this won't work? 
driver.find_element_by_class_name("session[username_or_email]") 

# won't work, as the 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 as usual 
0

это то, что работает для меня

EmailElement = driver.find_element_by_name('session[username_or_email]') 

PasswordElement = driver.find_element_by_name('session[password]') 

EmailElement.send_keys('email/username_goes_here') 

PasswordElement.send_keys('password_goes_here')