selenium小白学习笔记(7) - 第二个脚本(126邮箱登录为例,包含xpath定位、frame切换)
虽然现在已经大概了解了些selenium使用方法,但基本都是以百度搜索为例子。所以现在再使用其他常用的网站来试试。我选的是126的邮箱登录界面。
脚本例子
上脚本:
import time
import unittest
from selenium import webdriverclass test126(unittest.TestCase):@classmethoddef setUpClass(cls):cls.driver=webdriver.Chrome()cls.url=r"https://www.126.com/"def testLogin(self):self.driver.get(self.url)self.driver.find_element_by_id("switchAccountLogin").click()myframe=self.driver.find_element_by_xpath("//*[contains(@id,'x-URS-iframe')]")self.driver.switch_to.frame(myframe)time.sleep(5)self.driver.find_element_by_xpath("//*[@name='email' and @data-loginname='loginEmail']").clear()self.driver.find_element_by_xpath("//*[@name='email' and @data-loginname='loginEmail']").send_keys(yourname)self.driver.find_element_by_xpath("//*[@name='password' and @type='password']").send_keys(yourpassword)self.driver.find_element_by_id("dologin").click()time.sleep(10)@classmethoddef tearDownClass(cls):cls.driver.quit()if __name__=="__main__":unittest.main()
脚本说明
这里仍然使用的是unittest框架来编写的。关于unittest前面章节已经详细说过,这里不再说啦。重点说一下testLogin测试的主要内容:
1、打开126首页:使用get方法打开126邮箱首页https://www.126.com/,默认显示的是手机扫码登录界面
2、点击【密码登录】按钮,打开密码登录界面,语句为:self.driver.find_element_by_id(“switchAccountLogin”).click()
3、切换到用户登录frame,语句为: myframe=self.driver.find_element_by_xpath("//*[contains(@id,‘x-URS-iframe’)]")
self.driver.switch_to.frame(myframe)
4、清空邮箱用户名(防止有默认的用户名)
self.driver.find_element_by_xpath("//*[@name=‘email’ and @data-loginname=‘loginEmail’]").clear()
5、输入邮箱用户名
self.driver.find_element_by_xpath("//*[@name=‘email’ and @data-loginname=‘loginEmail’]").send_keys(yourname )
请用自己的邮箱账户,替换yourname
6、输入密码
self.driver.find_element_by_xpath("//*[@name=‘password’ and @type=‘password’]").send_keys(yourpassword )
请用自己的密码,替换yourpassword
7、点击【登录】按钮
一些问题
脚本经过5次调试后,才终于登陆成功。哎,对小白来说,不容易啊。遇到的主要问题有:
1、这个页面有多个frame,我之前对HTML并不是很熟悉,所以不知道这个情况。后来通过找我买的书《selenium3自动化测试实践》和百度,才知道这么个情况,所以加上了switch_to.frame方法切换到登陆的frame界面,问题解决。
2、页面上有的元素id包含随机生成的数字。
1)比如要切换的frame,id中包含随机的数字,如下图所示
所以找了找书,找到了适合的方法:
myframe=self.driver.find_element_by_xpath("//*[contains(@id,‘x-URS-iframe’)]")
在find_element_by_xpath中,可以使用属性包含的方式定位,这里的意思是,定位到id属性中包含x-URS-iframe的元素。
2)比如邮箱账户输入框,id完全由随机数字组成,id=“auto-id-xxxxxxxxxxx”,如下图所示
在find_element_by_xpath方法中,还支持多几个属性逻辑运算。如本例子中,
self.driver.find_element_by_xpath("//*[@name=‘email’ and @data-loginname=‘loginEmail’]").clear()
使用name和data-loginname同时符合条件的属性进行元素定位。
3、chrome浏览器的开发者工具实在好用,在定位元素时,多亏了这个工具,嘿嘿。
最后给自己鼓个劲,遇到问题不要放弃,多多实践才是。
selenium小白学习笔记(7) - 第二个脚本(126邮箱登录为例,包含xpath定位、frame切换)相关推荐
- 2021-08-31《内网安全攻防》学习笔记,第二章-域内信息收集(转自PowerLiu)
<内网安全攻防>学习笔记,第二章-域内信息收集 2020-07-212020-07-21 15:08:47阅读 1.1K0 2.1 内网信息搜集概述 当渗透测试人员进入内网后,面对的是一片 ...
- Polyworks脚本开发学习笔记(十七)-制作宏脚本自定义工具条
Polyworks脚本开发学习笔记(十七)-制作宏脚本自定义工具条 做好的宏脚本程序,每次打开脚本加载程序太多麻烦,为了方便的调用脚本做各种操作,可以使用系统的自定义工具条功能将脚本加载到工具条上. ...
- R语言小白学习笔记3—R语言读取数据
R语言小白学习笔记3-R语言读取数据 笔记链接 想说的话 学习笔记3-R语言读取数据 3.1 读取CSV文件 3.1.1 read_delim函数 3.1.2 fread函数 3.2 读取Excel数 ...
- 机器学习理论《统计学习方法》学习笔记:第二章 感知机
<统计学习方法>学习笔记:第二章 感知机 2 感知机 2.1 感知机模型 2.2 感知机学习策略 2.2.1 数据的线性可分性 2.2.2 感知机学习策略 2.3 感知机学习算法 2.3. ...
- 计算机网络学习笔记:第二章
文章目录 计算机网络学习笔记:第二章 前言 2.1.应用层协议原理 2.1.1 网络应用程序体系结构 2.1.2 进程通信 2.1.3 可供应用程序使用的运输服务 2.1.4 因特网提供的传输层服务 ...
- R语言小白学习笔记12—概率分布
R语言小白学习笔记12-概率分布 笔记链接 学习笔记12-概率分布 12.1 正态分布 12.2 二项分布 12.3 泊松分布 12.4 其他分布 笔记链接 学习笔记1-R语言基础. 学习笔记2-高级 ...
- R语言小白学习笔记13—基本统计
R语言小白学习笔记13-基本统计 笔记链接 学习笔记13-基本统计 13.1 概括性统计量 13.2 相关系数和协方差 13.3 t-检验 13.3.1 单样本t检验 13.3.2 两样本t检验 13 ...
- JavaScript学习笔记(第二部分)总共四部分
JavaScript学习笔记(第二部分)总共四部分 4 对象(Object) 字符串String.数值Number.布尔值Boolean.空值Null.未定义Undefined是基本的数据类型,这些数 ...
- 深度学习yolov3 裂痕检测和手势识别教程 小白学习笔记
深度学习yolov3 手势识别教程 小白学习笔记 深度学习yolov3 裂痕检测和手势识别教程 小白学习笔记 这是本人在学习yolov3目标检测过程的一些记录,希望能够对大家有所帮助 裂痕检测视频演示 ...
- oracle 触发器登录,【学习笔记】Oracle触发器 实现指定用户登录oracle案例
天萃荷净 触发器实现指定用户登录oracle,分享一篇关于Oracle数据库安全策略,通过Oracle触发器实现限定user用户登录Oracle数据库的方法 1.创建允许登录用户表 CREATE TA ...
最新文章
- 活动目录在构建核心过程中的八个关键点(下)
- Python中的元编程:一个关于修饰器和元类的简单教程
- 使用AutoIt实现UI自动化上传附件
- Fread 和fwrite的参数不同,返回值不同
- CSS3透明背景表单
- python位置参数ppt_如何在Python中使用一个或多个相同的位置参数?
- relative布局html,CSS的四种布局方式static/relative/fixed/absolute
- 阿里云centos 安装和配置 DokuWiki
- activeperl安装不成功_手把手教你:Windows系统上安装GPU深度学习环境
- ajax主要有哪些方法,ajax的使用方法和原理,ajax包括哪些技术呢
- Spring Boot 项目中Java对象的字符串类型属性值转换为JSON对象的布尔类型键值的解决方法及过程
- GB28181协议--心跳
- [JZOJ4567]nekopara
- CSS中的filter与backdrop-filter属性的异同点
- 真我q2PRO鸿蒙系统,看看搭载鸿蒙OS2.0系统的华为MatePad Pro 2跑分如何?
- 成功中标 荣联为中国检科院打造一站式生信服务平台
- wps表格户主序号_WPS表格怎么设置自动排列序号?
- 小白也能做的选择(上)
- 微信实现股票查询功能
- 乐优商城部署配置过程