2017-06-05 37 views
0

我嘗試:如何使用selenium的webdriver在mail.ru中打開一封信?

driver = webdriver.Firefox() 
driver.get('https://e.mail.ru/messages/inbox/') 
... 
letterTag = driver.find_element_by_css_selector("div.b-datalist__item__addr") 

,這讓我:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"id","selector":"div.b-datalist__item__addr"} 

我看到 'div.b-datalist__item__addr'在開發工具,但在網頁的源代碼,我找不到它。我想它是由javascript生成的...我需要點擊這個元素才能打開一個字母。我怎樣才能做到這一點?

+0

您是否正確地登錄? –

+0

@MattClark,是的。至少,我是這麼認爲的。我輸入了名字和密碼,使用send_keys()和submit()。 –

+0

你有沒有試過:'driver.execute_script(「...」)'與合適的JS代碼? –

回答

0

Link to documentation。 我的解決方案:

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 

name = input("Login: ") 
password = input("Password: ") 
driver = webdriver.Chrome() 
driver.get('https://mail.ru/') 
driver.find_element_by_id('mailbox__login') 
mail_name = driver.find_element_by_id('mailbox__login') 
mail_name.send_keys(name) 
mail_pass = driver.find_element_by_id('mailbox__password') 
mail_pass.send_keys(password) 
mail_pass.submit() 
# get first letter 
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "a.js-href.b-datalist__item__link"))) 
element.click() 
相關問題