这是一个很多基础演示的书上的例子,但是一般按照这些书上的代码可能都不能成功登录。也许是网易修改了126的页面导致的吧,下面给出最新的能够work的版本

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()

  需要注意的几个问题:

  1. 这个页面是带有iframe的,需要switch_to进去才能填写用户名,密码,否则找不到。具体的可以自行百度iframe
  2. WebDriverWait里面有一个expectedcondition有一个专门的方法就是判断frame是否available,如果available则switch进去。这个可以提升代码的运行速度。当然是用强制等待后再switch也是没问题的,如图我里面注释掉的代码,也是可以工作的。
  3. 小示例,但是包含的基础知识点不少,包括unittest框架。

Python 3 + Selenium 3 简单入门学习示例 126邮箱登录的更多相关文章

  1. 初学Python之爬虫的简单入门

    初学Python之爬虫的简单入门 一.什么是爬虫? 1.简单介绍爬虫   爬虫的全称为网络爬虫,简称爬虫,别名有网络机器人,网络蜘蛛等等. 网络爬虫是一种自动获取网页内容的程序,为搜索引擎提供了重要的 ...

  2. 《Selenium自动化测试实战:基于Python》Selenium自动化测试框架入门

    第1章  Selenium自动化测试框架入门 1.1  Selenium自动化测试框架概述 说到目前流行的自动化测试工具,相信只要做过软件测试相关工作,就一定听说过Selenium. 图1-1是某企业 ...

  3. 函数:Python的乐高积木 - 零基础入门学习Python017

    函数:Python的乐高积木 让编程改变世界 Change the world by program 相信大家小时候应该都玩过神奇的乐高积木,只要通过想象和创意,我们可以用它拼凑出很多神奇的东西. 随 ...

  4. Spark的Streaming和Spark的SQL简单入门学习

    1.Spark Streaming是什么? a.Spark Streaming是什么? Spark Streaming类似于Apache Storm,用于流式数据的处理.根据其官方文档介绍,Spark ...

  5. Spring.Net 简单入门学习

    Spring.NET IoC容器的用法. 通过简单的例子学习Spring.Net 1.先创建一个控制台程序项目. 2.添加IUserInfoDal 接口. namespace Spring.Net { ...

  6. SDL 简单入门学习

    write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 概要 实际学习使用SDL创建窗体,并绘制图形. 前言 今天想要做一个简单的demo ...

  7. 【Python】Python3基本语法入门学习

    0.Python概述 1.First Word Game 2.变量与字符串 3.improved game 4.Python数据类型 5.常用操作符 6.分支与循环 7.列表 8.元组 9.字符串内置 ...

  8. python 爬虫 Selenium的简单使用

    一.Selenium基础介绍及安装 1.Selenium简介 Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome.Firefox.Safari等主流界面浏览器,同时也支 ...

  9. android的简单入门学习

    话说光配环境就整死我了, 不是说多么难, 是最近google被屏了, 很多sdk里面需要下载的东西都下不下来, 坑爹啊.  最后跟扫拉稀要了一个他配置好的,才运行了. android目录分析: ass ...

随机推荐

  1. TinyMCE入门

    引入TinyMCE脚本 <script src="https://cdn.tiny.cloud/1/no-api-key/tinymce/5/tinymce.min.js" ...

  2. 如何提高你的移动开发中AS3/AIR性能

    Shawn Blais 让我了解到如何在移动平台上对AS3代码进行优化.他的博客(http://esdot.ca/site/category/blog)只有十来篇文章,但都是些很意思的信息,尤其适合我 ...

  3. vue+element下拉框样式的点击按钮

    项目中点击按钮实在太多了,怎么办呢?我们就可以将它们制作成像下拉框那样的类似操作 1.HTML样式部分:关键点在于command 方法和属性 1 <el-dropdown 2 size=&quo ...

  4. Fundebug前端JavaScript插件更新至1.8.0,兼容低版本的Android浏览器

    摘要: 兼容低版本Android浏览器,请大家及时更新. Fundebug前端BUG监控服务 Fundebug是专业的程序BUG监控平台,我们JavaScript插件可以提供全方位的BUG监控,可以帮 ...

  5. 3.redis 都有哪些数据类型?分别在哪些场景下使用比较合适?

    作者:中华石杉 面试题 redis 都有哪些数据类型?分别在哪些场景下使用比较合适? 面试官心理分析 除非是面试官感觉看你简历,是工作 3 年以内的比较初级的同学,可能对技术没有很深入的研究,面试官才 ...

  6. itextpdf5生成document生成pdf的简单dome

    package dbzx.pdf; import java.io.FileNotFoundException; import java.io.FileOutputStream; import org. ...

  7. IDEA 设置(中文乱码、svn、热部署、ideolog 、Jrebel )

    目录 console中文乱码 idea 多个工程分别设置svn idea svn忽略版本控制 idea svn客户端 ideolog 插件配置 idea 热部署 Jrebel 插件激活和使用 # I ...

  8. 大数据技术原理与应用【第五讲】NoSQL数据库:5.3 NoSQL的四大类型

    5.3 NoSQL的四大类型   5.3.1 键值数据库和列族数据库 可以分为四大类产品:键值数据库,列族数据库,文档数据库,图数据库 (代表)   1.键值数据库:   用的多:redis云数据库: ...

  9. 15-cmake语法-math

    math 数学表达式 math(EXPR <output variable> <math expression>) 例子: math(EXPR VAR "${VAR} ...

  10. 去掉VSS控制

    1:删除.vssscc.vssver.scc .项目名.csproj.vspscc文件 2:.csproj文件删除以下内容   SccProjectName = "SAK"   S ...