From 0d8976158cfb8bba48d2d00949bf6d5b31ffebb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=B7=E9=91=AB?= Date: Tue, 15 Oct 2019 14:26:37 +0800 Subject: [PATCH] =?UTF-8?q?163=E7=99=BB=E5=BD=95=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 163email/163email.py | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/163email/163email.py b/163email/163email.py index 100a992..b5c3701 100755 --- a/163email/163email.py +++ b/163email/163email.py @@ -1,5 +1,8 @@ import time from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.support.ui import WebDriverWait def login(): @@ -8,26 +11,31 @@ def login(): driver = webdriver.Chrome() url = 'http://mail.163.com/' driver.get(url) - time.sleep(30) + + # 等待页面加载完成,出现可以点击到密码登录的button + wait = WebDriverWait(driver, 10) + wait.until(EC.element_to_be_clickable((By.ID, 'lbNormal'))) + driver.find_element_by_id('lbNormal').click() + # 使用CSSSelector正则匹配头部 elem = driver.find_element_by_css_selector("iframe[id^='x-URS-iframe']") # 163登陆框是使用iframe进行嵌套的,所以需要先切换到该iframe driver.switch_to.frame(elem) - acount = driver.find_element_by_name('email') - acount.clear() - acount.send_keys(acount_num) + account_el = driver.find_element_by_xpath('//input[@name="email"]') + account_el.clear() + account_el.send_keys(acount_num) - passwd = driver.find_element_by_name('password') - passwd.clear() - passwd.send_keys(passwd_str) + password_el = driver.find_element_by_xpath('//input[@name="password"]') + password_el.clear() + password_el.send_keys(passwd_str) - time.sleep(3) - click_button = driver.find_element_by_id('dologin') - click_button.click() - time.sleep(5) - cur_cookies = driver.get_cookies()[0] + login_el = driver.find_element_by_xpath('//a[@id="dologin"]') + login_el.click() + + time.sleep(10) + cur_cookies = driver.get_cookies() return cur_cookies