web自动化系列-selenium执行js脚本|截图|识别验证码(十五)

news2024/11/17 11:56:00

1.执行脚本

如果你定位的元素通过各种方法都无法完成页面操作,最后的方法就是通过操作js脚本来完成 。

在selenium中提供了一个方法 ,这个可以方法可以自行JS的脚本 。具体为:

 

execute_script(js脚本) : js脚本代表要执行的脚本 


# 示例
js = "console log('hello world')"		# 打印hello world
driver.execute_script(js)  

具体案例:

driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
sleep(3)

js = 'window.scrollTo(0, document.body.scrollHeight)'	# 滚动到底部
driver.execute_script(js)		# 执行js脚本

sleep(3)

js = 'window.scrollTo(0, document.body.scrollTop=0)'	# 滚动到顶部
driver.execute_script(js)		# 执行js脚本

2.截图

编写好的自动化脚本有时候会运行错误 ,但是打印的信息又不足以排查出错误 ,故希望能在执行出错的时候对当前窗口截图保存 ,通过保存图片就可以非常直观的看出错误的原因 。

在selenium中提供了一个截图的方法 ,具体为:

driver.get_screenshot_as_file(img_path)		img_path : 图片保存路径
# 需要注意的是,它的保存格式为.png , 其它格式会报错。

具体案例 :

  1. 访问项目,

  2. 输入错误密码后

  3. 点击登录


# 保存头
"""
driver.get_screenshot_as_file(img_path)   img_path : 保存图片的路径加文件名 ,保存的是png格式 。
"""

# 定位tpshop登录
from selenium import webdriver
import time

# 1. 创建浏览器对象
driver = webdriver.Chrome()
driver.maximize_window()

# 2. 输入地址 :http://localhost
driver.get("http://localhost")

# 3. 定位元素
# 1) 点击登录
driver.find_element_by_link_text("登录").click()
time.sleep(3)

# 2) 输入用户名
driver.find_element_by_id("username").send_keys("13988888888")

# 3) 输入密码
driver.find_element_by_name("password").send_keys("1234567")

# 4) 输入验证码
driver.find_element_by_name("verify_code").send_keys("8888")

time.sleep(1)

# 5) 点击登录
driver.find_element_by_class_name("J-login-submit").click()
time.sleep(3)
driver.get_screenshot_as_file('login_error.jpg')	# 保存截图

time.sleep(5)
driver.quit()

 

3.验证码

只要你做web测试,肯定绕不过验证码这一关 ,因为系统设计验证码的初衷就是为了防自动化软件登录 。所以 ,在进行web自动化时 ,验证码的解决也必须是要考虑的 ,目前可行的方案有以下几种 :

解决方案说明推荐度
去掉验证码去掉验证码,虽说解决测试的问题,但是它容易给开发造成问题,比如不小心把没有验证码的代码上传到用户环境上 。一般
设置后门验证码保持正常变化,但是让开发做个通行证码,只要输入这个码就能验证通过,而这个码也只有测试人员知道,即便不小心上线,别人也不知道。推荐
验证码识别通过python-tesseract来识别图片类型的验证码,但是识别率不够稳定 ,而且有些系统验证码特别难 ,靠识别不能保证自动化的稳定性 。不推荐
记录cookie通过记录cookie进行跳过登录 。通过会话跟踪, 记录用户登录状态,需要实现记住密码和自动登录功能的系统才可以 。一般

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1656076.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OC类与对象(下)

OC类与对象(下) 文章目录 OC类与对象(下)不是包装类的NSValue 和NSNumber处理对象打印对象和description方法 和 isEqual方法 类别类别语法部分利用类别进行模块化设计使用类别来调用私有方法 类的扩展协议与委托规范,…

BLIP和BLIP2 论文讲解

文章目录 BLIPIntroductionMethod模型架构预训练目标字幕和过滤(Capfilt) BLIP2IntroductionMethod模型结构Q-Former预训练第一阶段Q-Former预训练第二阶段 BLIP 论文: 《BLIP: Bootstrapping Language-Image Pre-training for Unified Visio…

Unity打开安卓设备不同的设置面板

1,打开安卓设备不同的设置面板,我还贴心的把Android官网的链接放下面了 2,使用也很方便:unity按钮事件上拖这个脚本,注册MyOpenAndroidSettings方法,参数 填 和枚举值相应的数字 // 功能:打开…

【c++】线程池的原理及实现

💻文章目录 📄前言线程池的原理概念工作原理 线程池的实现线程池的基础结构任务队列的实现工作线程的实现 线程池的应用与拓展线程池的拓展 📓总结 📄前言 不知道各位是否有试过点进限时抽奖网站、抢票网站呢?你是否好…

静态分析-RIPS-源码解析记录-02

这部分主要分析scanner.php的逻辑,在token流重构完成后,此时ini_get是否包含auto_prepend_file或者auto_append_file 取出的文件路径将和tokens数组结合,每一个文件都为一个包含require文件名的token数组 接着回到main.php中,此时…

一款功能强大的网络安全综合工具-PotatoTool

一、 简介 这款工具是一款功能强大的网络安全综合工具,旨在为安全从业者、红蓝对抗人员和网络安全爱好者提供全面的网络安全解决方案。它集成了多种实用功能,包括解密、分析、扫描、溯源等,为用户提供了便捷的操作界面和丰富的功能选择。 二…

《Fundamentals of Power Electronics》——状态空间平均法

文献中出现了许多交流变换器建模技术,包括电流注入法、电路平均法和状态空间平均法。尽管给定方法的支持者可能更喜欢用特定形式表示最终结果,但几乎所有方法的最终结果都是等效的。所有人都会赞同,平均和小信号线性化是PWM变换器建模的关键步…

厚德提问大佬答4:AI绘画生成的心得

遇到难题不要怕!厚德提问大佬答! 厚德提问大佬答 你是否对AI绘画感兴趣却无从下手?是否有很多疑问却苦于没有大佬解答带你飞?从此刻开始这些问题都将迎刃而解!你感兴趣的话题,厚德云替你问,你解…

Element-plus修改input的placeholder文字颜色

需求 代码 .el-input__inner::placeholder {color: #666f8d !important; }

图像处理--空域滤波增强(原理)

一、均值滤波 线性滤波算法,采用的主要是邻域平均法。基本思想是使用几个像素灰度的某种平均值来代替一个原来像素的灰度值。可以新建一个MN的窗口以为中心,这个窗口S就是的邻域。假设新的新的像素灰度值为,则计算公式为 1.1 简单平均法 就是…

堆的应用2——TOPK问题

TOPK问题 TOP-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。 比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 情况1——数据量小 对于Top-K问题,能想到的最简单直接的方式就…

品鉴中的文化碰撞:如何理解和欣赏不同文化背景下的红酒

红酒作为世界各地广泛生产的产品,具有丰富的文化内涵。不同国家、地区和民族的红酒文化各具特色,反映了当地的历史、传统、习俗和生活方式。在品鉴云仓酒庄雷盛红酒时,理解和欣赏不同文化背景下的红酒是提升品鉴体验的重要一环。 首先&#x…

【Java orm 框架比较】九 新增wood框架对比

【Java orm 框架比较】九 新增wood框架对比 本次新增wood 框架测试 测试数据存储、分页查询,文档及框架比较稳定半天时间加入测试使用 迁移到(https://gitee.com/wujiawei1207537021/spring-orm-integration-compare) orm框架使用性能比较…

【STM32 |GPIO】GPIO结构、GPIO输出

目录 GPIO简介 GPIO的基本结构 GPIO位结构(每一位的具体电路结构) 输入 上拉和下拉电阻 斯密特触发器 ​编辑 输出 GPIO模式 ​编辑 浮空输入、上拉输入、下拉输入 模拟输入 开漏输出和推挽输出 复用开漏输出和复用推挽输出 LED和蜂鸣器…

代码随想录算法训练营第36期DAY22

DAY22 654最大二叉树 自己做的时候忽略了:nums.length>1的题给条件。所以每次递归都要判断是否size()>1,不要空的。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *rig…

JSpdf,前端下载大量表格数据pdf文件,不创建dom

数据量太大使用dom》canvas》image》pdf.addimage方法弊端是canvas超出 浏览器承受像素会图片损害,只能将其切割转成小块的canvas,每一次调用html2canvas等待时间都很长累积时间更长,虽然最终可以做到抽取最小dom节点转canvas拼接数据,但是死…

[附源码+视频教程]暗黑纪元H5手游_架设搭建_畅玩三网全通西方3D世界_带GM

本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了 一. 演示视频 暗黑纪…

Android 查看CUP占用率

查看每个进程CUP占用率的几种方式,由于自己充电界面老是导致整机温度过高,后面发现自己的线程一直在跑,相当于死循环,后面加上sleep才得以改善;先看看几种查询方式吧。 1、adb shell top 2、adb shell busybox top 3、adb shell …

C++类和对象中篇

🐇 🔥博客主页: 云曦 📋系列专栏:[C] 💨路漫漫其修远兮 吾将而求索 💛 感谢大家👍点赞 😋关注📝评论 文章目录 📔前言📔1、类的六个…

微服务学习笔记

微服务学习笔记 文章目录 微服务学习笔记认识微服务微服务技术栈微服务学习要点微服务远程调用1)注册RestTemplate2) 服务远程调用RestTemplate Eureka注册中心简介操作过程搭建EurekaServer注册user-service在order-service完成服务拉取 Ribbon负载均衡IRule负载均衡策略饥饿加…