虽然现在已经大概了解了些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切换)相关推荐

  1. 2021-08-31《内网安全攻防》学习笔记,第二章-域内信息收集(转自PowerLiu)

    <内网安全攻防>学习笔记,第二章-域内信息收集 2020-07-212020-07-21 15:08:47阅读 1.1K0 2.1 内网信息搜集概述 当渗透测试人员进入内网后,面对的是一片 ...

  2. Polyworks脚本开发学习笔记(十七)-制作宏脚本自定义工具条

    Polyworks脚本开发学习笔记(十七)-制作宏脚本自定义工具条 做好的宏脚本程序,每次打开脚本加载程序太多麻烦,为了方便的调用脚本做各种操作,可以使用系统的自定义工具条功能将脚本加载到工具条上. ...

  3. R语言小白学习笔记3—R语言读取数据

    R语言小白学习笔记3-R语言读取数据 笔记链接 想说的话 学习笔记3-R语言读取数据 3.1 读取CSV文件 3.1.1 read_delim函数 3.1.2 fread函数 3.2 读取Excel数 ...

  4. 机器学习理论《统计学习方法》学习笔记:第二章 感知机

    <统计学习方法>学习笔记:第二章 感知机 2 感知机 2.1 感知机模型 2.2 感知机学习策略 2.2.1 数据的线性可分性 2.2.2 感知机学习策略 2.3 感知机学习算法 2.3. ...

  5. 计算机网络学习笔记:第二章

    文章目录 计算机网络学习笔记:第二章 前言 2.1.应用层协议原理 2.1.1 网络应用程序体系结构 2.1.2 进程通信 2.1.3 可供应用程序使用的运输服务 2.1.4 因特网提供的传输层服务 ...

  6. R语言小白学习笔记12—概率分布

    R语言小白学习笔记12-概率分布 笔记链接 学习笔记12-概率分布 12.1 正态分布 12.2 二项分布 12.3 泊松分布 12.4 其他分布 笔记链接 学习笔记1-R语言基础. 学习笔记2-高级 ...

  7. R语言小白学习笔记13—基本统计

    R语言小白学习笔记13-基本统计 笔记链接 学习笔记13-基本统计 13.1 概括性统计量 13.2 相关系数和协方差 13.3 t-检验 13.3.1 单样本t检验 13.3.2 两样本t检验 13 ...

  8. JavaScript学习笔记(第二部分)总共四部分

    JavaScript学习笔记(第二部分)总共四部分 4 对象(Object) 字符串String.数值Number.布尔值Boolean.空值Null.未定义Undefined是基本的数据类型,这些数 ...

  9. 深度学习yolov3 裂痕检测和手势识别教程 小白学习笔记

    深度学习yolov3 手势识别教程 小白学习笔记 深度学习yolov3 裂痕检测和手势识别教程 小白学习笔记 这是本人在学习yolov3目标检测过程的一些记录,希望能够对大家有所帮助 裂痕检测视频演示 ...

  10. oracle 触发器登录,【学习笔记】Oracle触发器 实现指定用户登录oracle案例

    天萃荷净 触发器实现指定用户登录oracle,分享一篇关于Oracle数据库安全策略,通过Oracle触发器实现限定user用户登录Oracle数据库的方法 1.创建允许登录用户表 CREATE TA ...

最新文章

  1. 活动目录在构建核心过程中的八个关键点(下)
  2. Python中的元编程:一个关于修饰器和元类的简单教程
  3. 使用AutoIt实现UI自动化上传附件
  4. Fread 和fwrite的参数不同,返回值不同
  5. CSS3透明背景表单
  6. python位置参数ppt_如何在Python中使用一个或多个相同的位置参数?
  7. relative布局html,CSS的四种布局方式static/relative/fixed/absolute
  8. 阿里云centos 安装和配置 DokuWiki
  9. activeperl安装不成功_手把手教你:Windows系统上安装GPU深度学习环境
  10. ajax主要有哪些方法,ajax的使用方法和原理,ajax包括哪些技术呢
  11. Spring Boot 项目中Java对象的字符串类型属性值转换为JSON对象的布尔类型键值的解决方法及过程
  12. GB28181协议--心跳
  13. [JZOJ4567]nekopara
  14. CSS中的filter与backdrop-filter属性的异同点
  15. 真我q2PRO鸿蒙系统,看看搭载鸿蒙OS2.0系统的华为MatePad Pro 2跑分如何?
  16. 成功中标 荣联为中国检科院打造一站式生信服务平台
  17. wps表格户主序号_WPS表格怎么设置自动排列序号?
  18. 小白也能做的选择(上)
  19. 微信实现股票查询功能
  20. 乐优商城部署配置过程

热门文章

  1. 9.0系统XPOSED框架安装经验
  2. 网站域名被拦截,网站被流量劫持,服务器攻击,网站被跨区恶意点击,问题的定义与解答
  3. OA办公——SwebUI开源应用解决方案
  4. android4能用otg吗,小米4支持OTG吗?小米4手机的OTG功能怎么用?
  5. 《深度学习之美》推荐序:通俗也是一种美德
  6. 数据库复习-3.常用的概念模型
  7. RFB-Net论文解读
  8. 假设检验的基本原理以及思想和方法
  9. TR转TO L_TO_CREATE_TR
  10. 面向对象继承 C#编程记录