這是一個不少基礎演示的書上的例子,可是通常按照這些書上的代碼可能都不能成功登陸。也許是網易修改了126的頁面致使的吧,下面給出最新的可以work的版本python
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from time import sleep import unittest class Login126Main(unittest.TestCase): def setUp(self) -> None: self.url = 'https://m.126.com/' self.username = 'herbert.zhou' self.userpassword = 'XXXXXX' self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.driver.maximize_window() def test_login(self): driver = self.driver driver.get(self.url) sleep(5) self.assertEqual(driver.title, '126網易免費郵--你的專業電子郵局', '登陸') # driver.switch_to.frame(driver.find_element_by_xpath('//iframe[starts-with(@id, "x-URS-iframe")]')) WebDriverWait(driver, 10).until( EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[starts-with(@id, "x-URS-iframe")]'))) # 填寫用戶名 driver.find_element_by_xpath('//input[@name="email"]').send_keys(self.username) # 填寫密碼 driver.find_element_by_xpath('//input[@name="password"]').send_keys(self.userpassword) # 提交 driver.find_element_by_xpath('//a[@id="dologin"]').click() sleep(10) # 驗證跳轉成功 self.assertEqual(driver.title, '網易郵箱6.0版', '登陸成功') def tearDown(self) -> None: self.driver.quit() if __name__ == '__main__': unittest.main()
須要注意的幾個問題:web