实战演练

ActionChains之move_by_offset的使用方法 自动化测试要用到move_by_offset,但是网上的详细讲解很少,所以在此基于自己的理解做个记录。 首先,参数中的x,y坐标是根据浏览器窗口来定位,所以可以说是绝对定位,那么首先就需要找出一个元素在浏览器中的位置,步骤如下: 1、page ruler工具 这是一个浏览器插件,下载安装在谷歌浏览器中就可以使用了,操作非常简单,效果是这个样子的: 黑框框选中了输入框的位置,可以看到上面... 阅读详情

之前我们对web元素做的操作主要是:选择元素,然后 点击元素 或者 输入 字符串。

还有没有其他的操作了呢?

有。

比如:比如 鼠标右键点击、双击、移动鼠标到某个元素、鼠标拖拽等。

这些操作,可以通过 Selenium 提供的 ActionChains 类来实现。

ActionChains 类 里面提供了 一些特殊的动作的模拟,我们可以通过 ActionChains 类的代码查看到,如下所示

image

 

我们以移动鼠标到某个元素为例。

百度首页的右上角,有个 更多产品 选项,如下图所示

白月黑羽Python3教程

如果我们把鼠标放在上边,就会弹出 下面的 糯米、音乐、图片 等图标。

使用 ActionChains 来 模拟鼠标移动 操作的代码如下:

from selenium import webdriver

driver = webdriver.Chrome(r'f:\chromedriver.exe')
driver.implicitly_wait(5)

driver.get('https://www.baidu.com/')

from selenium.webdriver.common.action_chains import ActionChains

ac = ActionChains(driver)

# 鼠标移动到 元素上
ac.move_to_element(
    driver.find_element_by_css_selector('[name="tj_briicon"]')
).perform()

冻结界面

有些网站上面的元素, 我们鼠标放在上面,会动态弹出一些内容。

比如,百度首页的右上角,有个 更多产品 选项,如下图所示

白月黑羽Python3教程

如果我们把鼠标放在上边,就会弹出 下面的 糯米、音乐、图片 等图标。

如果我们要用 selenium 自动化 点击 糯米图标,就需要 F12 查看这个元素的特征。

但是 当我们的鼠标 从 糯米图标 移开, 这个 栏目就整个消失了, 就没法 查看 其对应的 HTML。

怎么办?

可以如下图所示:

白月黑羽Python3教程

 

在 开发者工具栏 console 里面执行如下js代码

setTimeout(function(){debugger}, 5000)

 

这句代码什么意思呢?

表示在 5000毫秒后,执行 debugger 命令

执行该命令会 浏览器会进入debug状态。 debug状态有个特性, 界面被冻住, 不管我们怎么点击界面都不会触发事件。

 

所以,我们可以在输入上面代码并回车 执行后, 立即 鼠标放在界面 右上角 更多产品处。

这时候,就会弹出 下面的 糯米、音乐、图片 等图标。

然后,我们仔细等待 5秒 到了以后, 界面就会因为执行了 debugger 命令而被冻住。

然后,我们就可以点击 开发者工具栏的 查看箭头, 再去 点击 糯米图标 ,查看其属性了。

弹出对话框

有的时候,我们经常会在操作界面的时候,出现一些弹出的对话框。

请大家打开这个网址 http://f.python3.vip/webauto/test4.html

分别点击界面的3个按钮,你可以发现:

弹出的对话框有三种类型,分别是 Alert(警告信息)、confirm(确认信息)和prompt(提示输入)

Alert

Alert 弹出框,目的就是显示通知信息,只需用户看完信息后,点击 OK(确定) 就可以了。

那么,自动化的时候,代码怎么模拟用户点击 OK 按钮呢?

selenium提供如下方法进行操作

driver.switch_to.alert.accept()

注意:如果我们不去点击它,页面的其它元素是不能操作的。

 

如果程序要获取弹出对话框中的信息内容, 可以通过 如下代码

driver.switch_to.alert.text

 

示例代码如下

from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get('http://f.python3.vip/webauto/test4.html')


# --- alert ---
driver.find_element_by_id('b1').click()

# 打印 弹出框 提示信息
print(driver.switch_to.alert.text) 

# 点击 OK 按钮
driver.switch_to.alert.accept()

Confirm

Confirm弹出框,主要是让用户确认是否要进行某个操作。

比如:当管理员在网站上选择删除某个账号时,就可能会弹出 Confirm弹出框, 要求确认是否确定要删除。

Confirm弹出框 有两个选择供用户选择,分别是 OK 和 Cancel, 分别代表 确定 和 取消 操作。

那么,自动化的时候,代码怎么模拟用户点击 OK 或者 Cancel 按钮呢?

selenium提供如下方法进行操作

如果我们想点击 OK 按钮, 还是用刚才的 accept方法,如下

driver.switch_to.alert.accept()

如果我们想点击 Cancel 按钮, 可以用 dismiss方法,如下

driver.switch_to.alert.dismiss()

 

示例代码如下

from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get('http://f.python3.vip/webauto/test4.html')

# --- confirm ---
driver.find_element_by_id('b2').click()

# 打印 弹出框 提示信息
print(driver.switch_to.alert.text)

# 点击 OK 按钮 
driver.switch_to.alert.accept()

driver.find_element_by_id('b2').click()

# 点击 取消 按钮
driver.switch_to.alert.dismiss()

Prompt

出现 Prompt 弹出框 是需要用户输入一些信息,提交上去。

比如:当管理员在网站上选择给某个账号延期时,就可能会弹出 Prompt 弹出框, 要求输入延期多长时间。

可以调用如下方法

driver.switch_to.alert.send_keys()

 

示例代码如下

from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get('http://f.python3.vip/webauto/test4.html')


# --- prompt ---
driver.find_element_by_id('b3').click()

# 获取 alert 对象
alert = driver.switch_to.alert

# 打印 弹出框 提示信息
print(alert.text)

# 输入信息,并且点击 OK 按钮 提交
alert.send_keys('web自动化 - selenium')
alert.accept()

# 点击 Cancel 按钮 取消
driver.find_element_by_id('b3').click()
alert = driver.switch_to.alert
alert.dismiss()

注意 : 有些弹窗并非浏览器的alert 窗口,而是html元素,这种对话框,只需要通过之前介绍的选择器选中并进行相应的操作就可以了。

其他技巧

下面是一些其他的 Selenium 自动化技巧

窗口大小

有时间我们需要获取窗口的属性和相应的信息,并对窗口进行控制

  • 获取窗口大小
driver.get_window_size()
  • 改变窗口大小
driver.set_window_size(x, y)

获取当前窗口标题

浏览网页的时候,我们的窗口标题是不断变化的,可以使用WebDriver的title属性来获取当前窗口的标题栏字符串。

driver.title

获取当前窗口URL地址

driver.current_url

例如,访问白月黑羽Python在线教程网站,并获取当前窗口的标题

from selenium import  webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(5)

# 打开网站
driver.get('https://www.python3.vip/')

# 获取网站标题栏文本
print(driver.title) 

# 获取网站地址栏文本
print(driver.current_url) 

截屏

有的时候,我们需要把浏览器屏幕内容保存为图片文件。

比如,做自动化测试时,一个测试用例检查点发现错误,我们可以截屏为文件,以便测试结束时进行人工核查。

可以使用 WebDriver 的 get_screenshot_as_file方法来截屏并保存为图片。

from selenium import  webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(5)

# 打开网站
driver.get('https://www.baidu.com/')

# 截屏保存为图片文件
driver.get_screenshot_as_file('1.png')

手机模式

我们可以通过 desired_capabilities 参数,指定以手机模式打开chrome浏览器

参考代码,如下

from selenium import webdriver

mobile_emulation = { "deviceName": "Nexus 5" }

chrome_options = webdriver.ChromeOptions()

chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)

driver = webdriver.Chrome( desired_capabilities = chrome_options.to_capabilities())

driver.get('http://www.baidu.com')

input()
driver.quit()
攻防演练实战派|专题合集之攻防演练全流程 攻防演练实战派-不要“演”就是“干”专题已经连续更新五期了,如果您也跟随我们的时间安排进行了备战准备,相信您也已经可以“安心待战”了吧!我们就来整体做一下回顾,既温习一遍备战细节,又可以再次进行备战巩固,看有无疏漏。第一步 ► :网络空间资产盘点,绘制网络空间写实地图,参考《网络空间资产盘点十大“避坑”指南》;第二步 ►:利用创宇蜜罐设陷,重塑网络空间地形,参考《纵深主动防御“修炼”手册,重塑网络空间地形》;第三步 ►:实时流量检测,强化全流量优势,参考《实时威胁响应“三全”计划》;第四步 ►:临战演练磨合 阅读详情

相关推荐

国开大学 VisualBasic程序设计 形考任务三:请同学选择课程【第4章】-【实战演练】“实验4 菜单设计”或【第5章】-【实战演练】“实验5鼠标Mouse

国开大学 VisualBasic程序设计 形考任务三:请同学选择课程【第4章】-【实战演练】“实验4 菜单设计”或【第5章】-【实战演练】“实验5鼠标MouseMove事件应用”的其中之一,在VB集成开发环境中认真完成实验。

html元素 按键精灵鼠标移动,按键精灵后台鼠标移动和点击脚本怎么制作。

脚本如下Dim hwndPlugin hwnd=Window.MousePoint()Delay 1000Rem starPlugin BGKM5.MMove(hwnd,668,297)//移动左键到“军事行动”Delay 400Plugin BGKM5.LClick(hwnd,668,297)//左键单击“军事行动”Delay 400Plugin BGKM5.MMove(hwnd,573,199...

weixin_28944067的博客 2200

国开大学 VisualBasic程序设计 形考任务一:请同学选择【第1章】-【实战演练】“实验1 欢迎程序”

国开大学 VisualBasic程序设计 形考任务一:请同学选择【第1章】-【实战演练】“实验1 欢迎程序”或【第2章】-【实战演练】“实验2 计时秒表程序”的其中之一,在VB集成开发环境中认真完成实验。

jquery、Javascript实现鼠标滚轮滑动使横向滚动条滑动

jquery实现鼠标滚轮滑动使横向滚动条滑动 刚找到的方法,记一下。 HTML代码: <div style="width: 5000px;">test</div> jQuery代码: $(function() { var scroll_width = 100; // 设置每次滚动的长度,单位 px var scroll_events = "mousewheel DOMMouseScroll MozMousePixelScroll"; // 鼠标滚轮滚动事件名 $(docum

qq_44332894的博客 3328

企业网综合演练.rar

技术包括OSPF,VLAN,端口绑定VLAN,trunk,NAT转换,VLAN间互访等等

电大现代教育原理形考作业答案.rar

01任务 试卷总分:100 测试时间:0 名词解释 简答题 论述题 一 、名词解释(共 8 道试题,共 40 分。) 1. 教育 从广义上说,凡是增进人们的知识和技能,影响人们思想品德的活动,都是教育。狭义的教育主要指学校教育,其含义是教育者根据一定社会的要求,有目的有计划、有组织地对受教育者的身心施加影响,把他们培养成为一定社会所需要的人的活动。

Mouse.bat 模拟鼠标操作脚本

Mouse.bat 模拟鼠标操作脚本 mouse.bat 模拟鼠标操作, 调用方式 //clicks at the current position call mouse click //double clicks at the current position call mouse doubleClick //right clicks at the current position call mouse rightClick //returns the position of the cursor cal

无为 2万+

电大VB形考任务三答案

电大VB形考任务三答案

web自动化学习之selenium安装喝浏览器驱动和元素定位

安装 pip install selenium 查看 pip show selenium 卸载 pip uninstall selenium 扩展 1.安装指定版本 pip install selenium版本号 eg:pip install selenium2.48.0 驱动下载地址 谷歌:http://npm.taobao.org/mirrors/chromedriver/87.0.4280.88/ 火狐:https://github.com/mozilla/geckodriver/releases

许大头博客 684

汇川H5U搭配步进伺服电机使用CANopen通讯控制电机案例

摘要:本文介绍了基于汇川H5U PLC和STM4260B-CANopen-M步进伺服电机的控制系统搭建流程。主要内容包括:硬件准备(PLC、伺服电机、24V电源)、电机参数默认设置(地址1号、1M波特率)、使用AutoShop软件编写程序(配置CANopen参数、导入电机描述文件、设置PDO参数)以及功能块编程(使能控制、速度控制、绝对位置控制等)。通过查阅通讯手册完成各功能块参数配置,最终在主程序中调用功能块实现控制系统开发。该方案适用于需要精确运动控制的工业自动化场景。

m0_46512607的博客 1596

DTS 数据迁移

支持关系型数据库(MySQL, Oracle, SQL Server等)、NoSQL数据库、大数据系统等。DTS数据迁移是现代化数据架构调整和云迁移过程中的重要工具,能够大大降低数据迁移的复杂度和风险。DTS (Data Transmission Service) 是一种数据迁移和同步服务,:先迁移历史数据(全量),再实时同步新增变化(增量):不同数据库类型间迁移,如Oracle到MySQL。:将单库数据迁移到分库分表架构。:将业务数据迁移到分析型数据库。:将本地数据库迁移到云数据库。

qq_41081716的博客 749

攻防演练组织方的实战演练计划表

实战攻防演练通常以实际运行的信息系统作为演练目标,通过有 监督的攻防对抗,最大限度地模拟真实的网络攻击,以检验信息系统 的安全性和运维保障的有效性。演练在保障业务系统安全性的前提 下,明确目标系统,不限制攻击路径,以提权、控制业务、获取数据 为目的。实战攻防演练包含攻击、防守、组织三方,并配备实战攻防 演练平台。组织方负责演练整体工作的组织协调,主要包括以下几部 分:演练组织、演练过程监控、演练技术指导、应急保障、演练总 结、防守技术措施与策略优化建议等。实战攻防演练一般可分为准 备、演练、收尾三个阶段。

securitypaper的博客 1243

SoC低功耗设计实战:28nm工艺下四核A7的Hierarchical Flow全流程解析

本文深入解析了在TSMC 28nm工艺上,采用Hierarchical Flow(层次化流程)实现四核Cortex-A7 SoC低功耗设计的全流程。文章从项目背景切入,详细探讨了基于UPF的电源规划、时钟树综合、接口时序收敛以及物理验证等关键环节,分享了使用Cadence Innovus等工具进行低功耗物理实现的实战经验与挑战。

weixin_29231263的博客 325

攻防演练-紫队视角下的实战攻防演练组织

组织方负责演练整体工作的组织协调,主要包括以下几部 分:演练组织、演练过程监控、演练技术指导、应急保障、演练总 结、防守技术措施与策略优化建议等。通过制定合理的演练规则与完备 的应急预案,在确保不影响生产的前提下,利用攻防对抗的方式,可 以充分发挥蓝队的攻击技术水平,并充分展现每个参演单位的动态防 御、主动防御、纵深防御、精准防护、整体防护、联防联控的防守能 力;为加强对各攻击队攻击的监测,通过攻防演练平台开展演练全过 程的监督、记录、审计和展现,避免演练影响业务正常运行。(5)攻击方木马使用要求。

m0_73803866的博客 1633

Win11系统下Notepad++右键菜单失效?3种修复方法实测有效(附注册表备份指南)

本文针对Windows 11系统中Notepad++右键菜单失效的常见问题,提供了三种经过实测有效的修复方法。核心解决方案包括使用官方NppShell.dll重新注册、手动修复注册表项以及系统级问题排查,并详细说明了操作前的注册表备份指南,确保修复过程安全可靠。

m2n3b4v5c6的博客 328

YOLOv11改进 | Conv/卷积篇 | 轻量化多尺度异构卷积(MSHC)优化YOLOv11精度(全网独家首发)

本文介绍了Hype-YOLO提出的MANet结构,这是C3、C2f、C3k2的升级版,能显著增强特征提取能力。MANet整合了DSConv和C2f结构,通过多分支异构设计提升梯度流动和特征语义深度。文章详细解析了MSHC模块的原理,包括其多尺度并行建模、通道混洗等核心机制,并提供了完整的代码实现和训练教程。实验表明,Hype-YOLO的精度优于YOLOv11。该结构在保持轻量化的同时,通过异构分支设计实现了更丰富的特征表达,适用于目标检测等视觉任务。

Snu77的博客 953

《ZigBee实战演练》

转一个多年前的帖,看内容就知道: 为什么学习 ZigBee? 试想着有一天,你坐在电脑前,你家里的空调、冰箱、洗衣机、电视,等在你屏幕前受你掌控时,这便是物联网的时代。我是一名普通的电子爱好者,半年前由于项目需要我接触了ZigBee,在那之前我也曾经了解过ZigBee,感觉是个很神秘的东西,神秘的无线模块。第一天在 ZigBee 模块,我快速寻找着上面的 MCU,很可惜只发现 CC25...

qq_18536597的博客 494

Xilinx DDR3 MIG IP核设计--汇总导航

快速上手Xilinx DDR3 IP核----汇总篇

孤独的单刀 2万+

体系化、常态化、实战化的攻防演练的现状

我国实战攻防演练的发展分为两个阶段:第一阶段是试验阶段, 以学习先进实战经验为主,参演单位少,演练范围小;第二阶段是推 广阶段,实战演练发展飞速,参演单位数量暴增,演练走向规模化。

securitypaper的博客 1749

Vue3 - H5实现省市区三四级联动组件,选择地址自定义省市区三级联动插件,弹框式多级联动选择器区域选择,vue3实现省市区三级联动地址选择组件(支持接口数据懒加载,样式精美漂亮,附带详细示例源码)

vue3实现省市区三级联动地址选择组件(附address文件),vue3实现省市区三级联动, 实现省、市、县地区三级联动功能,vue3省市区选择器,VUE3 h5如何实现省市区街道的四级联动选择,vue实现省市区选择联动,vue3城市三级联动(自定义组件)_VUE三级联动,插件省市区联动,vue如何实现省市区选择器,vue3怎样实现省市区地址三级联动,vue四级联动,vue3级联选择器,vue3实现选择省市区镇(街道)四级级联选择,包含三级级联选择,省市区街道三级四级联动选择器,VUE3自定义多列选择器省市

🏆 前端领域优质创作者 3069

“/usr/lib/wsl/wsl-setup“ failed, exiting

WSL2安装Ubuntu时出现"wsl-setup failed"错误的解决方法 摘要:当Windows用户名包含中文字符时,安装WSL2+Ubuntu会出现"wsl-setup failed"错误。本文提供两种解决方案:1)修改中文用户名(风险较大);2)通过命令手动配置。推荐第二种方法:先使用"wsl -l -v"查看Ubuntu名称,再通过"wsl -d Ubuntu20.04 -e /bin/bash"命令启动WSL2系

猿小白的博客 997

autojs代码大全(实战演练)

autojs代码大全(实战演练) 写这个文档的起因是群里有很多人,基础代码不是很熟悉,所以写了这个。 意图是为了大家对基础代码熟练一些,知道某个代码能起到什么作用,运行后有什么效果 /* *@更多基础不会的加autojs交流群553908361喽; *@整理不易纯手打 完成时间:2020.5.1 */// //在资讯页面开始运行 waitForActivity(“com.ss.android.ugc.aweme.search.activity.SearchResultActivity”) //显示控制台

九黎AJ的博客 3万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java后台接口开发实战演练

作为一名普通的Android开发者,想要独立开发一个App,最头疼的地方在于后台接口没人写,正常来说会有以下两种解决方案: 1. 用第三方服务 2. 自己搭建服务器 第一种方案我之前试过,使用的是[bmob后端云](https://www.bmob.cn/),还别说,当时用的还挺顺手,以致于最后成功的把我的App上架到应用市场,然鹅,好景不长,慢慢的,bmob开始各种收费了,一个是短信没法正常使用,后来我换成了mob的短信SDK,觉得用着不顺手,又换回了bmob的邮件登陆,再后来邮件又收费了,直到最

xunming的专栏 6万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

TTT实战演练记录

2009年4月16、17两天参加了倪砥老师的TTT实战演练,比起之前参加过的简化版TTT培训,这个课理论不多,更多的是倪老师的实战演示和我们的实战训练,老师的演示讲了职业竞争力与执行力课程的节选,内容本身也让人很有收获。自己的30分钟实战讲了《人人都是产品经理》的一小段,并且有录像,有点评,很挑战。下面记录一些课程内容: 开始提到了课程材料准备:  Ø  公开内容按照时间线出3份:大纲(min...

juwendong的专栏 262

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

我国实战攻防演练的发展现状

蓝队是指网络实战攻防演练中的攻击一方。蓝队一般会针对目标单位的。

m0_73803866的博客 1193

红蓝攻防演练怎样构建实战化网络安全防御体系

网络安全的本质在于对抗,对抗的本质在于攻防两端能力的较 量。《网络安全 法》就网络安全应急演练工作明确指出,关键信息基础设施的运营者 应当“制定网络安全事件应急预案,并定期进行演练”,国家网信部 门应当统筹协调有关部门“定期组织关键信息基础设施的运营者进行 网络安全应急演练,提高应对网络安全事件的水平和协同配合能 力”,“负责关键信息基础设施安全保护工作的部门应当制定本行 业、本领域的网络安全事件应急预案,并定期组织演练”,要求关键 信息基础设施的运营者、国家网信部门等定期组织开展应急演练工 作。

ITSM/ITIL/网络安全/IT运维 1694
上一篇: web浏览器自动化(python selenium)
下一篇: Mysql数据库练习
raw_recruit0302
博客等级 码龄8年 30粉丝 42原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值