2014-08-29 6 views
3

Я использую модуль Selenium в Python для входа в Quora. Он отлично работает для Facebook, но я получаю сообщение об ошибке на линии send_keys('my_email') при попытке его на Quora:Невозможно войти в Quora с помощью Selenium webdriver в Python

Я использую следующий скрипт.

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import time 

driver = webdriver.Firefox() 
driver.get('http://www.quora.com/') 
time.sleep(60) 

username = driver.find_element_by_name('email') 
time.sleep(60) 
username.send_keys('my_email') 
time.sleep(60) 

password = driver.find_element_by_name('password') 
time.sleep(60) 
password.send_keys('my_password') 
time.sleep(60) 

password.send_keys(Keys.RETURN) 

driver.close 

Время сна здесь не проблема, потому что я попытался выполнить сценарий по очереди с помощью оболочки Python.

Ошибка:

Traceback (most recent call last): File "", line 1, in password.send_keys('my_password') File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 293, in send_keys self._execute(Command.SEND_KEYS_TO_ELEMENT, {'value': typing}) File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 370, in _execute return self._parent.execute(command, params) File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 173, in execute self.error_handler.check_response(response) File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 164, in check_response raise exception_class(message, screen, stacktrace) ElementNotVisibleException: Message: u'Element is not currently visible and so may not be interacted with' ; Stacktrace: at fxdriver.preconditions.visible (file:///c:/users/siddhesh/appdata/local/temp/tmpgwft3s/extensions/[email protected]/components/command_processor.js:8791:5) at DelayedCommand.prototype.checkPreconditions_ (file:///c:/users/siddhesh/appdata/local/temp/tmpgwft3s/extensions/[email protected]/components/command_processor.js:11438:1) at DelayedCommand.prototype.executeInternal_/h (file:///c:/users/siddhesh/appdata/local/temp/tmpgwft3s/extensions/[email protected]/components/command_processor.js:11455:11) at DelayedCommand.prototype.executeInternal_ (file:///c:/users/siddhesh/appdata/local/temp/tmpgwft3s/extensions/[email protected]/components/command_processor.js:11460:7) at DelayedCommand.prototype.execute/< (file:///c:/users/siddhesh/appdata/local/temp/tmpgwft3s/extensions/[email protected]/components/command_processor.js:11402:5)

+0

какую ошибку вы получили? –

+0

Просьба включить полный ответ в вопрос. – alecxe

ответ

5

Проблема заключается в том, что существует несколько входов с name="email".

Вам нужно один в разделе "Regular" Вход:

form = driver.find_element_by_class_name('regular_login') 
username = form.find_element_by_name('email') 
username.send_keys('my_email') 

password = form.find_element_by_name('password') 
password.send_keys('my_password') 
+0

Я думаю, проблема в строке username.send_keys(). Поскольку, как я уже сказал, я попытался выполнить его по строке в оболочке, и он дает ошибку в строке send_keys. – Siddhesh

+0

@Siddhesh ok, какую ошибку вы получаете? – alecxe

+0

Traceback (самый последний вызов последнего): Файл "", строка 1, в password.send_keys ('my_email') Файл «C: \ python27 \ Lib \ сайт-пакеты \ селеном \ WebDriver \ удаленный \ webelement .py ", строка 293, в send_keys self._execute (Command.SEND_KEYS_TO_ELEMENT, {'value': typing}) Файл" C: \ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ webelement.py " , строка 370, в _execute return self._parent.execute (команда, параметры) Файл «C: \ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py», строка 173, в исполнении self .error_handler.check_response (response) – Siddhesh