首页 文章

无法使用Python中的Selenium webdriver登录Quora

提问于
浏览
3

我在Python中使用Selenium模块登录Quora . 它适用于Facebook,但我在Quora上尝试时在 send_keys('my_email') 行上收到错误:

我使用以下脚本 .

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 shell逐行执行脚本 .

错误:

回溯(最近一次调用最后一次):文件“”,第1行,在password.send_keys('my_password')文件“C:\ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ webelement.py”中,行293,在send_keys中self.execute(Command.SEND_KEYS_TO_ELEMENT,{'value':输入})文件“C:\ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ webelement.py”,第370行,在_execute中返回self.parent.execute(command,params)文件“C:\ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py”,第173行,执行self.error_handler.check_response(response)文件“C :\ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py“,第164行,在check_response中引发exception_class(消息,屏幕,堆栈跟踪)ElementNotVisibleException:消息:u'Element当前不可见,因此可能不会与'互动'; Stacktrace:在DelayedCommand的fxdriver.preconditions.visible(文件:/// c:/users/siddhesh/appdata/local/temp/tmpgwft3s/extensions/fxdriver@googlecode.com/components/command_processor.js:8791:5) . 在delayededCommand.prototype.executeInternal / h中的prototype.checkPreconditions(文件:/// c:/users/siddhesh/appdata/local/temp/tmpgwft3s/extensions/fxdriver@googlecode.com/components/command_processor.js:11438:1) (文件:/// c:/users/siddhesh/appdata/local/temp/tmpgwft3s/extensions/fxdriver@googlecode.com/components/command_processor.js:11455:11)在DelayedCommand.prototype.executeInternal_(file:// /c:/users/siddhesh/appdata/local/temp/tmpgwft3s/extensions/fxdriver@googlecode.com/components/command_processor.js:11460:7)在DelayedCommand.prototype.execute / <(file:/// c: /users/siddhesh/appdata/local/temp/tmpgwft3s/extensions/fxdriver@googlecode.com/components/command_processor.js:11402:5)

1 回答

  • 5

    问题是 name="email" 有多个输入 .

    您需要“常规登录”部分中的那个:

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

相关问题