selenium自动化测试--126邮箱登录问题总结

2023-11-07

虫师著selenium 2自动化测试实战基于python语言第四章习题4.3.1 126邮箱登录练习问题总结。

练习过程中,参考以下博友的博客顺利完成练习题:

https://blog.csdn.net/cyjs1988/article/details/75006167

https://www.cnblogs.com/liyuhang/p/6661835.html

https://blog.csdn.net/simplelearner/article/details/81947215

 

1、动态id原因导致定位元素失败问题:

#coding=utf-8
from selenium import webdriver

driver = webdriver.Chrome()
#调用webdriver
driver.get("http://www.126.com")
#通过get()方法想浏览器发送126邮箱网址

driver.find_element_by_id("auto-id-1537235284167").clear()
#清空用户名输入框
driver.find_element_by_id("auto-id-1537235284167").send_keys("username")
#根据id查找元素,输入126邮箱账号
driver.find_element_by_id("auto-id-1537235284168").clear()
#清空密码输入框
driver.find_element_by_id("auto-id-1537235284168").send_keys("pwd")
#根据id查找元素,输入密码
driver.find_element_by_id("dologin").click()
#登录


#driver.quit()
#退出并关闭浏览器

第一遍编写的代码如上,运行结果:

 Message: no such element: Unable to locate element: {"method":"id","selector":"auto-id-1537235284167"},找不到元素。原因是由于此id是动态id,每次刷新http://www.126.com页面该值都会变话。因此找不到对应元素。

2、含有空格的复合元素导致定位元素失败问题:

查找元素必须是唯一的。使用class定位。运行报错:

#coding=utf-8
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.126.com")
driver.find_element_by_class_name("j-inputtext dlemail").clear()
#清空用户名输入框
driver.find_element_by_class_name("j-inputtext dlemail").send_keys("username")
#根据id查找元素,输入126邮箱账号
driver.find_element_by_class_name("j-inputtext dlpwd").clear()
#清空密码输入框
driver.find_element_by_class_name("j-inputtext dlpwd").send_keys("pwd")
#根据id查找元素,输入密码
driver.find_element_by_class_name("f-cb loginbox").click()

原因是:该class是含有空格的复合类。无法直接使用find_element_by_class_name()方法查询。解决办法具体参考第一条链接的博客(Selenium在定位的class含有空格的复合类的解决办法)。

注:参考该博客时,发现使用class单个属性定位失败!css_selector单个属性成功。o(╥﹏╥)o  推荐使用css_selector定位。

3、框架原因导致定位元素失败问题:

根据复合属性解决办法,编写如下程序,运行报错。

#coding=utf-8
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.126.com")

driver.find_element_by_css_selector(".dlemail").clear()
#单个属性

driver.find_element_by_css_selector("[class='j-inputtext dlemail']").send_keys("user")
#直接包含空格的CSS属性定位

driver.find_element_by_css_selector(".j-inputtext.dlpwd").clear()
#css定位双属性

driver.find_element_by_css_selector(".dlpwd").send_keys("pwd")
#css定位单属性
driver.find_element_by_css_selector(".loginbox").click()

还是提示找不到元素,原因是:由于定位元素仅会在当前所处的frame中寻找该元素,如果有多个frame时需要先切换到对应的frame下才能够找到该元素。仔细查看页面信息,找到到id为x-URS-iframe的iframe。

4、frame未加载完成导致定位不到frame问题:

使用driver.switch_to.frame()方法,切换到元素所在的frame。

#coding=utf-8
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.126.com")

driver.switch_to.frame("x-URS-iframe")
#定位到对应的frame

driver.find_element_by_class_name(".dlemail").clear()
#class单个属性

driver.find_element_by_css_selector("[class='j-inputtext dlemail']").send_keys("user")
#直接包含空格的CSS属性定位

driver.find_element_by_css_selector(".j-inputtext.dlpwd").clear()
#css定位双属性

driver.find_element_by_css_selector(".dlpwd").send_keys("pwd")
#css定位单属性
driver.find_element_by_css_selector(".loginbox").click()

运行报错,是由于程序打开网页,frame还没有加载完成导致。需要添加一个延时操作。time.sleep(),使用该方法需要import time模块。

5、正常运行,登录成功  (*^▽^*)

#coding=utf-8
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("http://www.126.com")

time.sleep(2)
driver.switch_to.frame("x-URS-iframe")
#定位到对应的frame

driver.find_element_by_css_selector(".dlemail").clear()
#单个属性

driver.find_element_by_css_selector("[class='j-inputtext dlemail']").send_keys("user")
#直接包含空格的CSS属性定位

driver.find_element_by_css_selector(".j-inputtext.dlpwd").clear()
#css定位双属性

driver.find_element_by_css_selector(".dlpwd").send_keys("pwd")
#css定位单属性
driver.find_element_by_css_selector(".loginbox").click()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

selenium自动化测试--126邮箱登录问题总结 的相关文章

  • UML用例图的作用、功能模块图作用与数据库设计三者关系

    这周周一 我们导师要求小组成员开会 我们分别汇报自己的工作 在会中 谈到了用例图 于是我们开始对大家熟悉的用例图进行探讨 经过探讨与自己的思考 我认为应该从以下几个问题来弄清楚用例图的作用 1 用例图由谁来做 为谁做 做完了有什么用途 用例
  • Java8 stream 根据对象字段去重

    public class Java8StreamTest public static class Book private String id private String name public Book String id String
  • attention注意力机制学习

    参考资料 目前主流的attention方法都有哪些 JayLou娄杰的回答 知乎 目前主流的attention方法都有哪些 张戎的回答 知乎 Attention机制解读 高峰OUC的文章 知乎 Transformer详解 一 Attenti
  • linux:filezilla连接ubuntu失败,提示 状态:尝试连接“ECONNREFUSED - 连接被服务器拒绝”失败。

    问题 如上 解决办法 发现ping的通 说明是别的问题 可能是端口号不对 sftp与ftp是否没有区别 超级向向阳的回答 知乎 ftp和sftp有什么区别 ftp和sftp哪个速度快 贝锐花生壳官网 ps 如果是连接超时 注意是否开启了防火
  • 记一次sqlmap的--os-shell的实战

    一 站点内容获取 描述 一个后台管理界面 通常我们会尝试使用弱口令爆破 sql注入 万能密码等 在这个站点我们尝试了弱口令爆破没有成功 但尝试sql注入成功了 并且发现了一系列的struts2框架漏洞 并成功接管了站点的数据库等等 二 站点
  • 2023华为OD机试真题【统一限载最小值】【2023.Q1】

    题目描述 火车站附近的货物中转站负责将到站货物运往仓库 小明在中转站负责调度2K辆中转车 K 辆干货中转车 K 辆湿货中转车 货物由不同供货商从各地发来 各地的货物是依次进站 然后小明按照卸货顺序依次装货到中转车上 一个供货商的货只能装到一
  • 如何在 Linux 中将文件编码转换为 UTF-8

    转自 https linux cn article 7959 1 html 在这篇教程中 我们将解释字符编码的含义 然后给出一些使用命令行工具将使用某种字符编码的文件转化为另一种编码的例子 最后 我们将一起看一看如何在 Linux 下将使用
  • Supermap聚合服务

    大家好 下面呢 我们来学习supermapserver的聚合服务 我们主要学习三个方面的内容 首先呢 我们来了解一下什么是聚合服务 它的一个含义那么其次呢 我们来了解一下聚合服务的原理啊 最后呢 我们来学习一下 如何去创建 聚合服务创建聚合
  • 使用Mathjax网页插入公式

    本文关于 想在网页里面插入公式 找到了 Mathjax 这里说怎么设置 具体来说是怎么在博客园设置 以及一点点如何使用 设置方法 需要开通js的权限 进入 设置 在页脚Html代码输入
  • eggjs中使用jwt

    开发接口时需要生成token 和校验token egg jwt就是一个很不错的插件 下边就教大家如何使用 废话不多说 先看效果 开始教程 安装包 yarn add egg jwt 全局引入jwt config plugin js modul
  • 真正的小说 真正的生活 真正的蜕变 真正的品味

    记得以前曾经看过这篇文章 但是没有看完全 今天蓦然在杜的空间再次看到这 篇文章 决定再看一次 而且 很认真的看完了 感觉现在的自己跟以前又不一样了 很 多的感触只是埋在心里 慢慢消融 慢慢体味 同时慢慢成长着 从他的字里行间我看得 到他是用
  • 计算机网络八和ctf做题七

    计算机网络学习了一段时间 因为里面有很多要记住的东西 而且还有很多协议有的还比较抽象 所以学着学着发现把那些协议都搞混了 所以这篇文章将要讲一些重要协议 点对点协议 点对点协议 点对点协议简称PPP协议 工作在数据链路层 设计目的主要是用来
  • linux下查看磁盘空间

    突然系统不能使用了 可以看一下是不是磁盘占满 了 首先登录到服务器 我的是mac 直接登录 使用ssh登录ssh t root 104 224 166 36 p27988 windows系统也可以使用 xshell来登录 命令行 df df
  • Debian下安装中文包和输入法【解决无法显示中文问题】

    以前一直用的都是ubuntu 输入法之类的点点鼠标就 了 最近需要使用debian了 安装了一个桌面版 vim写代码感觉有点恶心 安装的时候全部选择英文 运行起来发现竟然无法显示中文 输入法也没找到在哪里设置 我是在虚拟机下安装的 可能会有
  • ITX-RK3588J在Ubuntu22.04上进行SDK编译与烧写

    一 SDK下载 在Window上下载好最新的SDK 并把他放拉到虚拟机里的Ubuntu22 04上 二 搭建编译环境 Firefly维基教程上 需要安装编译环境 直接使用 sudo apt get install 软件名 安装全部软件 su

随机推荐

  • X2000 Linux PWM

    一 硬件设计 PC04 PWM4 二 通过shell开启PWM 配置参数 cmd pwm config pc04 freq 1000 max level 100 active level 1 accuracy priority freq 启
  • Docker容器中启动Arthas异常

    使用Docker容器部署spring boot项目 Dockerfile文件内容如下 FROM openjdk 8 jre alpine 第一步将apk源替换为国内阿里源 没有第一步将下载难产 RUN echo e https mirror
  • 117.Django-缓存redis

    1 概述 动态网站的基本权衡是 它们是动态的 每次用户请求页面时 Web服务器都会进行各种计算 从数据库查询到模板呈现再到业务逻辑 以创建站点访问者看到的页面 从处理开销的角度来看 这比标准的文件读取文件系统服务器要耗时多了 对于大多数We
  • 【CS229 lecture19】微分动态规划

    首先声明一下 这节课基本没听懂 但是还是把课程笔记写下 lecture19 微分动态规划 继续强化学习算法的讨论 Agenda 课程中段我曾讲过调试learning algorithm 今天再来将强化学习的部分 The motivating
  • 蓝桥杯 双向排列(Java)

    这题我看了两个博主的文章可算把它看懂了 链接如下 蓝桥杯 I 双向排序 Jozky86的博客 CSDN博客 蓝桥杯双向排序 蓝桥杯2021年第十二届省赛 双向排序 zy98zy998的博客 CSDN博客 蓝桥杯双向排序 我的代码如下 imp
  • 一句话说明白IRQL

    Windows操作系统运行的处理器架构中 硬件产生信号发给可编程中断控制器 中断控制器发送中断请求 IRQ 及相应的优先级给CPU CPU设置一个掩码 mask 屏蔽低优先级的其他中断请求到挂起状态 pending state 直到CPU释
  • 两台windows电脑之间通信

    一台做客户端 一台做服务端 服务端 import os import socket import time from test pip import pip test def server socket while True ip port
  • 微信小程序农历阳历日期选择器选中日期同时获取对应农/阳历日期 这个demo问题的修改

    修改以下三个文件完成BUG的修复 selectdata js文件中将农历转阳历的代码修改成 以下是原selectdata js中的代码 搜索 calendarConverter lunar2solar 文件中就一处用到 释义 用到阴历转阳历
  • Python爬虫+数据可视化

    一 工具和环境 IDE Pycharm 第三方模块 1 jieba 主要功能 处理分词 2 requests 主要功能 获取接口数据 3 sqlite3 主要功能 进行数据库相关操作 4 matplotlib主要功能 进行绘图 5 ecah
  • R获知颜色名称及对应颜色代码

    pdf D colors bar pdf height 120 par mar c 0 10 3 0 0 1 yaxs i barplot rep 1 length colors col rev colors names arg rev c
  • docker container 设置自动重启,自动执行

    编写自动执行的脚本 start server sh 脚本内容是你要执行的内容 BASE PATH data3 image generate export PYTHONPATH PYTHONPATH BASE PATH cd BASE PAT
  • 2021-07-22-第一次实训(HTML+CSS+JS)

    layout post 标题配置 title 第一次实训 HTML CSS JS 时间配置 date 2021 07 22 11 00 00 0800 目录配置 categories JavaWeb 标签配置 tag 学习笔记 conten
  • 5 区块链的缺点及面临的问题

    5 1 区块链的缺点 任何事物都有两面性 区块链也不例外 之前介绍了区块链的去中心化 集体维护 解决信任问题等种种好处 现在咱们来看一下区块链的缺点 1 无隐私性 在区块链公有链中 每一个参与者都能够获得完整的数据备份 所有交易数据都是公开
  • 一文了解社区发现算法

    最近在调研社区发现图聚类在区域划分中的应用 将一些编辑汇总的信息记录如下 社团划分了解 社区是什么 在社交网络中 用户相当于每一个点 用户之间通过互相的关注关系构成了整个网络的结构 在这样的网络中 有的用户之间的连接较为紧密 有的用户之间的
  • 【会议资源】2022年第四届计算与人工智能国际研讨会(ISCAI 2022)

    2022年第四届计算与人工智能国际研讨会 ISCAI 2022 重要信息 会议网址 www iscai org 会议时间 2022年12月16 18日 召开地点 中国北京 截稿时间 2022年11月16日 录用通知 投稿后2周内 收录检索
  • Socket通信及文件操作

    java Socket通信及文件操作 编译软件 Eclipse 一 客户端 package com import java io BufferedReader import java io DataOutputStream import j
  • Mysql学习笔记-Mysql基础(基础看这篇就够了)

    数据库的基本概念 1 数据库的英文单词 DataBase 简称 DB 2 什么数据库 用于存储和管理数据的仓库 3 数据库的特点 1 持久化存储数据的 其实数据库就是一个文件系统 2 方便存储和管理数据 3 使用了统一的方式操作数据库 SQ
  • 【Linux】虚拟机免密登录

    以node1 node2为例 方法一 利用ssh keygen生成公钥和私钥 1 原理 在node1上生成公钥和私钥 之后将公钥复制到其他的虚拟机上 虚拟机通过匹配公钥则可以实现免密的操作 2 步骤 1 连接到node1 c ssh roo
  • Unknown CMake command "add_compile_definitions"

    Unknown CMake command add compile definitions 解决方法 换cmake 3 14
  • selenium自动化测试--126邮箱登录问题总结

    虫师著selenium 2自动化测试实战基于python语言第四章习题4 3 1 126邮箱登录练习问题总结 练习过程中 参考以下博友的博客顺利完成练习题 https blog csdn net cyjs1988 article detai