Conectar automáticamente en mi cuenta de Gmail con Python Selenium

Estoy intentando iniciar sesión automáticamente con mi cuenta de GMail con Selenium en Python, pero recibo este error:

selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with 

Mi código se ve así:

 #!/usr/bin/python # coding: utf8 import scrapy from selenium import webdriver from scrapy.selector import Selector from selenium.webdriver.common.action_chains import ActionChains from scrapy.contrib.spiders import CrawlSpider from scrapy.selector import HtmlXPathSelector from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor from scrapy.contrib.spiders import CrawlSpider, Rule from scrapy.http import Request, FormRequest from scrapy import log from scrapy.exceptions import DropItem from scrapy import signals from selenium.webdriver.common.by import By import scrapy from scrapy import signals from scrapy.http import TextResponse from scrapy.xlib.pydispatch import dispatcher from selenium import webdriver from selenium.webdriver.common.keys import Keys class googleplay(CrawlSpider): name = "selenium" flag = True def __init__(self): self.driver = webdriver.Firefox() self.driver.get('http://gmail.com') action = webdriver.ActionChains(self.driver) #User name input field identification and data entered usernametext = self.driver.find_element_by_name('Email') usernametext.send_keys("myemailaddress@gmail.com") #put your actual username self.driver.find_element_by_name('signIn').click() time.sleep(2) #Password input field identification and data entered passwordtext = self.driver.find_element_by_name('Passwd') passwordtext.send_keys("password") #put your actual password key = self.driver.find_element_by_name('signIn') print "----------------------" key.click() print "----------------------" start_urls = ["https://www.mywebsite.com"] def parse(self, reponse): #Loading the gmail URL print "toto" 

¿Cómo puedo solucionar mi problema?

Intenta cambiar la url. Utilice https://accounts.google.com/ServiceLogin?service=mail#identifier lugar de http://gmail.com .

Asegúrese de utilizar su correo electrónico y contraseña originales. Y cambie self.driver.find_element_by_name por self.driver.find_element_by_id para cada elemento.

Tu código será:

 #!/usr/bin/python # coding: utf8 import scrapy import time from selenium import webdriver from scrapy.selector import Selector from selenium.webdriver.common.action_chains import ActionChains from scrapy.contrib.spiders import CrawlSpider from scrapy.selector import HtmlXPathSelector from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor from scrapy.contrib.spiders import CrawlSpider, Rule from scrapy.http import Request, FormRequest from scrapy import log from scrapy.exceptions import DropItem from scrapy import signals from selenium.webdriver.common.by import By from scrapy import signals from scrapy.http import TextResponse from scrapy.xlib.pydispatch import dispatcher from selenium import webdriver from selenium.webdriver.common.keys import Keys class googleplay(CrawlSpider): name = "selenium" flag = True def __init__(self): self.driver = webdriver.Firefox() self.driver.get('http://gmail.com') action = webdriver.ActionChains(self.driver) #User name input field identification and data entered usernametext = self.driver.find_element_by_name('Email') usernametext.send_keys("myemail@gmail.com") #put your actual username self.driver.find_element_by_name('signIn').click() #Password input field identification and data entered passwordtext = self.driver.find_element_by_id('Passwd') passwordtext.send_keys("mypassword") #put your actual password self.driver.find_element_by_id('signIn').click() print "----------------------" #key.click() print "----------------------" start_urls = ["https://www.mywebsite.com"] def parse(self, reponse): #Loading the gmail URL print "toto"