2016-04-13 11 views
1

以下是我的代碼到目前爲止。它應該去的網站和登錄所有必要的細節,但我繼續得到大量的錯誤!我不明白錯誤隱藏在哪裏,任何看到它的人都請幫忙。謝謝!Selenium Python 3.4.3登錄到Gmail:密碼部分

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

browser = webdriver.Firefox() 
from selenium.webdriver.common.keys import Keys 
#browser.get('https://mail.yahoo.com') 
browser.get('https://accounts.google.com/ServiceLogin?sacu=1&scc=1&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&hl=en&service=mail#identifier') 

emailElem = browser.find_element_by_id('Email') 
emailElem.send_keys('email_address') 
nextButton = browser.find_element_by_id('next') 
nextButton.click() 
passwordElem = browser.find_element_by_id('Passwd') 

wait = WebDriverWait(browser, 10) 
passwordElem = wait.until(EC.visibility_of_element_located((By.ID, "Passwd"))) 
passwordElem.clear() 
passwordElem.send_keys('12345') 

SignIn = browser.find_element_by_id('signIn') 
SignIn.click() 

#passwordElem.clear() 
#passwordElem.send_keys('12345') 
#SignIn = browser.find_elements_by_id('signIn') 
#SignIn.click() 
#passwordElem.submit() 

這是我收到的錯誤:

Traceback (most recent call last): 
    File "C:/Users/hp-450/Desktop/Automating_Gmail.py", line 15, in <module> 
    passwordElem = browser.find_element_by_id('Passwd') 
    File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 266, in find_element_by_id 
    return self.find_element(by=By.ID, value=id_) 
    File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 744, in find_element 
    {'using': by, 'value': value})['value'] 
    File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 233, in execute 
    self.error_handler.check_response(response) 
    File "C:\Python34\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"Passwd"} 
Stacktrace: 
    at FirefoxDriver.prototype.findElementInternal_ (file:///C:/Users/hp-450/AppData/Local/Temp/tmp3awlgy5b/extensions/[email protected]/components/driver-component.js:10770) 
    at FirefoxDriver.prototype.findElement (file:///C:/Users/hp-450/AppData/Local/Temp/tmp3awlgy5b/extensions/[email protected]/components/driver-component.js:10779) 
    at DelayedCommand.prototype.executeInternal_/h (file:///C:/Users/hp-450/AppData/Local/Temp/tmp3awlgy5b/extensions/[email protected]/components/command-processor.js:12661) 
    at DelayedCommand.prototype.executeInternal_ (file:///C:/Users/hp-450/AppData/Local/Temp/tmp3awlgy5b/extensions/[email protected]/components/command-processor.js:12666) 
    at DelayedCommand.prototype.execute/< (file:///C:/Users/hp-450/AppData/Local/Temp/tmp3awlgy5b/extensions/[email protected]/components/command-processor.js:12608) 
+0

殺手,請你說清楚。 「你有什麼錯誤」是什麼意思? –

回答

1

後您輸入您的電子郵件並提交表單,wait for the password field to be visible

from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

# wait for the password field to be visible 
wait = WebDriverWait(browser, 10) 
passwordElem = wait.until(EC.visibility_of_element_located((By.ID, "Passwd"))) 
passwordElem.clear() 
passwordElem.send_keys('12345') 

SignIn = browser.find_element_by_id('signIn') 
SignIn.click() 

另外請注意,您必須使用find_element_by_id()代替的find_elements_by_id()方法找到「登錄」按鈕。

+0

嗨Alecxe,感謝您的建議,但仍然有一個錯誤即將到來,我忘了提及我已經嘗試做類似的事情。 –

+0

你需要告訴我們錯誤。 – n1c9

+0

@ stuum1。好吧,我實際上測試過了,它在我的最後工作。 – alecxe