selenium(5)-------自动化测试脚本(python)

1)alert框的处理

前提:我们是不可以通过控制台直接定位元素的方式去选中这个alert框的,例如说xpath直接进行定位元素

1)先获得弹框的操作句柄:alert=driver.switch_to.alert

2)再次调用accept方法进行关闭弹窗:alert.accept()

from selenium import webdriver
import time
driver=webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
url="D:\selenium2html\\alert.html"
# 1.先打开浏览器的界面
driver.get(url)
# 2.定位元素,先进行打开弹窗
driver.find_element_by_link_text("hover to see tooltip").click()
time.sleep(4)
# 3.进行选中弹出框,我们在进行选中操作弹出框的句柄
alert=driver.switch_to.alert
# 4.强制使用accept方法进行关闭alert框
alert.accept()
time.sleep(3)
driver.quit()

选中a标签也就是超链接,这里面我们既可以通过tagname的方式,也可以通过id的方式来进行获取:

我们点击弹出框,在进行关闭:

from selenium import webdriver;
import time;
import os;
driver=webdriver.Edge("C:\Program Files\Python310\Scripts\msedgedriver.exe");
filepath="file:///"+os.path.abspath("D:\selenium2html\\alert.html");
#通过浏览器进行打开文件
driver.get(filepath);
#先进行选中这个触发alert的a标签
a=driver.find_element_by_tag_name("a");
a.click();
time.sleep(3);
#我们在进行选中操作弹出框的句柄
alert=driver.switch_to.alert
alert.accept();
time.sleep(3);
driver.quit();

2)点击链接之后我们需要在这个弹框里面输入一些东西,然后这些东西最终就会展示在界面上面: 

前提:我们是不可以通过控制台直接定位元素的方式去选中这个alert框的,例如说xpath直接进行定位元素

操作步骤:

1)先获得alert框的输入句柄:alert=driver.switch_to.alert

2)向alert框中输入信息:alert.send_keys()

3)调用accept方法关闭输入框:alert.accept()

from selenium import webdriver
import time
# 1.先获取浏览器的驱动
driver=webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
# 2.提前设置好要展示的url
url="D:\selenium2html\\send.html"
# 3.打开浏览器在搜索栏里面输入相应的url
driver.get(url)
# 4.先进行点击那个固定的超链接然后再继续进行点击
driver.find_element_by_xpath("/html/body/input").click()
time.sleep(4)
# 5.获得弹出框的操作句柄
alert=driver.switch_to.alert
time.sleep(2)
alert.send_keys("中国好青年")
time.sleep(2)
alert.accept()
time.sleep(2)
# 6.关闭浏览器
driver.quit()

 3)再次进行点击上面的click me就会又显示出一段文字,最后再进行关闭输入框即可 4)目标就是点击divclass=myModal里面的嵌套的div class=modal-bod里面的a标签

5)关闭弹出框 

定位方式1: 

from selenium import webdriver
import time
import os
# 1.先获取谷歌浏览器的驱动
driver=webdriver.Chrome("C://Users//18947//AppData//Local//Programs//Python//Python310//chromedriver.exe")
# 2.让浏览器打开本地文件
url="file:///"+os.path.abspath("C:\selenium2html\\modal.html")
driver.get(url)
time.sleep(2)
# 3.先定位到Click标签再进行点击
driver.find_element_by_xpath("//*[@id='show_modal']").click()
time.sleep(3)
# 4.进行点击弹出框的a标签
driver.find_element_by_xpath("//*[@id='click']").click()
time.sleep(2)
# 5.最后选择输入弹出框的close按钮
driver.find_element_by_xpath("//*[@id='myModal']/div[3]/button[1]").click()
# 6.关闭浏览器
driver.close()

定位方式2: 

from selenium import webdriver;
import time;
import os;
driver=webdriver.Edge("C:\Program Files\Python310\Scripts\msedgedriver.exe");
filepath="file:///"+os.path.abspath("D:\selenium2html\\modal.html");
driver.get(filepath);
#先进行点击页面上面的初始按钮
driver.find_element_by_id("show_modal").click();
time.sleep(3);
#先选中弹框点击按钮所在的div,再来定位到这个div里面所要包含的a标签
fatherdiv=driver.find_element_by_class_name("modal-body");
fatherdiv.find_element_by_link_text("click me").click();
#在进行点击close关闭按钮,先进行关联这个close关闭按钮所在的父亲标签,再去定位这个点击按钮
time.sleep(3);
parentdiv=driver.find_element_by_class_name("modal-footer");
parentdiv.find_element_by_class_name("btn").click();
time.sleep(5);

定位方式3:

通过获取到数组来获取到点击按钮

from selenium import webdriver;
import time;
import os;
driver=webdriver.Edge("C:\Program Files\Python310\Scripts\msedgedriver.exe");
filepath="file:///"+os.path.abspath("D:\selenium2html\\modal.html");
driver.get(filepath);
#先进行点击页面上面的初始按钮
driver.find_element_by_id("show_modal").click();
time.sleep(3);
#先选中弹框点击按钮所在的div
fatherdiv=driver.find_element_by_class_name("modal-body");
fatherdiv.find_element_by_link_text("click me").click();
#在进行点击close关闭按钮
time.sleep(3);
parentdiv=driver.find_element_by_class_name("modal-footer");
butons=driver.find_elements_by_tag_name("button");
butons[0].click();
time.sleep(5);

1)先获取到元素所在的div

2)再(1)的基础上,在来定位对应的元素

适用于页面比较复杂的情况,可以大大降低元素因为重复属性而无法唯一定位的问题

上传文件: 

1)send_keys可以上传文件,里面方法的参数就是文件所在的绝对路径

2)先进行选中上传文件的按钮,在zend_keys()里面填写文件的路径

自动化测试脚本:

from selenium import webdriver
import time
import os
# 1.先获取到浏览器的驱动
driver=webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
# 2.打开网址
url="D:\selenium2html\\upload.html"
driver.get(url)
time.sleep(3)
# 3.选择上传文件按钮
driver.find_element_by_xpath("/html/body/div/div/input").send_keys("D:/aaa.jpg")
time.sleep(2)
driver.close();

1)在WebDriver中处理JavaScript所生成的alert、confirm以及prompt十分简单,只需要使用switch_to.alert定位到alert/confirm/prompt

2)然后使用text/accept/dismiss/send_keys等方法进行操作

弹框类型有:

弹框类型特性
alert警告类,显示警告或其他信息只有一个确认按钮
confirm确认类,询问是否继续某种操作等功能只有两个按钮:确认按钮+取消按钮
prompt消息类,需要输入一些信息,比如用户密码等有两个按钮:确认按钮+取消按钮,加一个输入框

弹框方法:

1)text:返回alert/confirm/prompt中的弹框文本信息

2)accept():确认按钮

3)dismiss():取消按钮

4)send_keys():prompt弹框输入字符

执行js脚本触发弹框方法:

alert弹框:driver.execute_script(“window.alert(‘这是一个alert弹框’);”)
confirm弹框:driver.execute_script(“window.confirm(‘这是一个confirm弹框’);”)
prompt弹框:driver.execute_script(“window.prompt(‘这是一个prompt弹框’);”)

 

from selenium import webdriver
import time
# 1.先获取到浏览器的驱动
driver=webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
# 2.打开网址
driver.get("http://www.baidu.com")
time.sleep(3)
# 3.执行js脚本触发confirm弹框
driver.execute_script("window.confirm('这是一个confirm弹框');")
time.sleep(3)
# 4.点击谭康中的确认按钮或者是取消按钮
confirm=driver.switch_to.alert
time.sleep(2)
confirm.dismiss()
time.sleep(2)
# 5.关闭浏览器
driver.close()

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高完整性系统工程(三): Logic Intro Formal Specification

目录 1. Propositions 命题 2.1 Propositional Connectives 命题连接词 2.2 Variables 变量 2.3 Sets 2.3.1 Set Operations 2.4 Predicates 2.5 Quantification 量化 2.6 Relations 2.6.1 What Is A Relation? 2.6.2 Relations as Sets 2.6.3 Binary Relations as…

XGBoost和LightGBM时间序列预测对比

XGBoost和LightGBM都是目前非常流行的基于决策树的机器学习模型,它们都有着高效的性能表现,但是在某些情况下,它们也有着不同的特点。 XGBoost和LightGBM简单对比 训练速度 LightGBM相较于xgboost在训练速度方面有明显的优势。这是因为Ligh…

【python刷题】leecode官方提示“->“,“:“这些符号是什么意思?什么是Type Hints?

作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于海外某世界知名高校就读计算机相关专业。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。…

八 SpringMVC【拦截器】登录验证

目录🚩一 SpringMVC拦截器✅ 1.配置文件✅2.登录验证代码(HandlerInterceptor)✅3.继承HandlerInterceptorAdapter(不建议使用)✅4.登录页面jsp✅5.主页面(操作页面)✅6.crud用户在访问页面时 只…

通过Cursor 工具使用GPT-4的方法

本文介绍了通过Cursor 工具使用GPT-4的方法。 目录 下载Cursor Cursor | Build FastRefactor, understand, and write code effortlessly with Cursor.https://www.cursor.so/ 1. 登录GitHub:Sign in to GitHub GitHub 2. 输入Cursor中给出的8位code 3. 点击C…

入行 5年,跳槽 3次,我终于摸透了软件测试这行(来自过来人的忠告)

目录 前言 第一年 第二年 第三年 第四年 作为过来人的一些忠告 前言 最近几年行业在如火如荼的发展壮大,以及其他传统公司都需要大批量的软件测试人员,但是20年的疫情导致大规模裁员,让人觉得行业寒冬已来,软件测试人员的职…

2023年网络安全比赛--网络安全事件响应中职组(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.找出黑客植入到系统中的二进制木马程序,并将木马程序的名称作为Flag值(若存在多个提交时使用英文逗号隔开,例如bin,sbin,…)提交; 2.找出被黑客修改的系统默认指令,并将被修改的指令里最后一个单词作为Flag值提交; 3.找出…

拥抱 Spring 全新 OAuth 解决方案

以下全文 Spring Authorization Server 简称为: SAS 背景 Spring 团队正式宣布 Spring Security OAuth 停止维护,该项目将不会再进行任何的迭代目前 Spring 生态中的 OAuth2 授权服务器是 Spring Authorization Server 已经可以正式生产使用 作为 SpringBoot 3.0 的…

字节跳动软件测试岗,前两面过了,第三面HR天坑!竟然跟我说……

阎王易见,小鬼难缠。我一直相信这个世界上好人居多,但是也没想到自己也会在阴沟里翻船。我感觉自己被字节跳动的HR坑了。在这里,我只想告诫大家,offer一定要拿到自己的手里才是真的,口头offer都是不牢靠的,…

Thread的基本操作

目录 一 . 创建线程 1) 继承Thread类 2) 使用Runnable 来创建线程 3) 继承Thread , 使用匿名内部类 4) 实现Runnable , 使用匿名内部类 5) lambda 表达式 创建线程(常用) 二 . Thread 构造方法 与 常用方法 1. 无参构造 Thread() 2. 只有Runnable 参数 Thread(Runnabl…

QT入门Item Views之QListView

目录 一、QListView界面相关 1、布局介绍 二、代码展示 1、创建模型,导入模型 2、 设置隔行背景色 3、删除选中行 三、源码下载 此文为作者原创,创作不易,转载请标明出处! 一、QListView界面相关 1、布局介绍 先看下界面…

内存泄漏定位工具之 valgrind

内存泄漏检测工具 文章目录内存泄漏检测工具一、valgrind介绍1. memcheck2. cachegrind3. helgrind二、源码下载三、命令操作1.memcheck 工具四、虚拟机下使用1. x86编译2. 正常程序测试3. 申请内存不释放测试4. 内存越界的测试5. 读写已经释放的内存五、ARM平台使用1.交叉编译…

ARM uboot 的移植4 -从 uboot 官方标准uboot开始移植

一、添加DDR初始化1 1、分析下一步的移植路线 (1) cpu_init_crit 函数成功初始化串口、时钟后,转入 _main 函数,函数在 arch/arm/lib/crt0.S 文件中。 (2) 在 crt0.S 中首先设置栈,将 sp 指向 DDR 中的栈地址; #if defined(CONF…

JetPack Compose入门知识

1. Jetpack Compse是什么 Jetpack Compose 是Android新一代UI开发框架,采用声明式开发范式,开发者只需要将注意力放在如何编写UI界面上,当需要渲染的数据发生变化时,框架会自动完成UI刷新,其次它使用Kotlin DSL来编写…

【工作中问题解决实践 七】SpringBoot集成Jackson进行对象序列化和反序列化

去年10月份以来由于公司和家里的事情太多,所以一直没有学习,最近缓过来了,学习的脚步不能停滞啊。回归正题,其实前年在学习springMvc的时候也学习过Jackson【Spring MVC学习笔记 五】SpringMVC框架整合Jackson工具,但是…

Github的使用

Github Date: March 8, 2023 Sum: Github的使用 Github 了解开源相关的概念 1. 什么是开源 2. 什么是开源许可协议 开源并不意味着完全没有限制,为了限制使用者的使用范围和保护作者的权利,每个开源项目都应该遵守开源许可协议( Open Sou…

深入底层——浅谈Vue2和Vue3的响应式数据实现原理

深入底层——浅谈Vue2和Vue3的响应式数据实现原理1、Vue2响应式数据存在的问题2、Vue2为什么监测不到属性变更3、Vue3是否存在该问题4、Vue3是如何做数据响应式的5、拓展5.1、Proxy代理对象5.2、Reflect反射对象6、总结1、Vue2响应式数据存在的问题 在vue2当中是如何做到更改数…

SpringCloud微服务技术栈.黑马跟学(一)

SpringCloud微服务技术栈.黑马跟学一微服务技术栈导学为什么学?学哪些?怎么学?1.认识微服务1.1.学习目标1.2.单体架构1.3.分布式架构1.4.微服务1.5.SpringCloud1.6.总结2.服务拆分和远程调用2.1.服务拆分原则2.2.服务拆分示例2.2.1.导入Sql语…

Threadlocal相关问题

Threadlocal相关问题 ​ 核心问题 ​ 1、 什么是ThreadLocal?核心方法有哪些? ​ 2、使用 拦截器 ThreadLocal 处理鉴权的整体流程是什么样的? ​ 3、代码编写实现流程有哪些? 面试相关 ​ ThreadLocal内存泄漏问题 ​ 1&…

jmeter使用json后置处理器变量使用

目录 1、json后置处理器添加 2、后置处理器说明 3、环境变量设置 4、设置全局使用变量 1、json后置处理器添加 json后置处理器位置在线程组或者线程组下的请求中都可添加 2、后置处理器说明 1、json后置处理器如果放在线程组的外面,则是所有线程组都可以使用&a…
最新文章