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()

 

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

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

相关文章

强化学习分类与汇总介绍

1.强化学习(Reinforcement Learning, RL) 强化学习把学习看作试探评价过程,Agent选择一个动作用于环境,环境接受该动作后状态发生变化,同时产生一个强化信号(奖或惩)反馈给Agent,Agent根据强化信号和环境当…

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

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

JavaSE基础总结

JDK与JRE JDK,全称Java Development Kit,Java开发工具包 JRE,全称Java Runntime Environment,Java运行环境 JDK包含后者JRE。 JDK也可以说是Java SDK(Software Development kit,软件开发工具包)…

JVM高频面试题

1、项目中什么情况下会内存溢出,怎么解决? (1)误用固定大小线程池导致内存溢出 Excutors.newFixedThreadPool内最大线程数是21亿(2) 误用带缓冲线程池导致内存溢出最大线程数是21亿(3)一次查询太多的数据,导致内存占用…

基于深度学习的农作物叶片病害检测系统(UI界面+YOLOv5+训练数据集)

摘要:农作物叶片病害检测系统用于智能检测常见农作物叶片病害情况,自动化标注、记录和保存病害位置和类型,辅助作物病害防治以增加产值。本文详细介绍基于YOLOv5深度学习模型的农作物叶片病害检测系统,在介绍算法原理的同时&#…

百度的文心一言 ,没有想像中那么差

robin 的演示 我们用 robin 的演示例子来对比一下 文心一言和 ChatGPT 的真实表现(毕竟发布会上是录的)。 注意,我使用的 GPT 版本是 4.0 文学创作 1 三体的作者是哪里人? 文心一言: ChatGPT: 嗯&a…

C++ STL:vector的使用方法及模拟实现

目录 一. vector概述 二. vector接口函数的使用方法和模拟实现 2.1 vector类模板的成员变量 2.2 构造函数的使用和模拟实现 2.2.1 构造函数的使用方法 2.2.2 构造函数的模拟实现 2.3 析构函数的模拟实现 2.4 赋值运算符重载函数的使用和模拟实现 2.4.1 函数的使用 2.…

MybatisPlus------MyBatisX插件:快速生成代码以及快速生成CRUD(十二)

MybatisPlus------MyBatisX插件(十二) MyBatisX插件是IDEA插件,如果想要使用它,那么首先需要在IDEA中进行安装。 安装插件 搜索"MyBatisX",点击Install,之后重启IDEA即可。 插件基本用途&…

蓝桥杯嵌入式第四课--定时器

前言蓝桥杯对于定时器这部分的考察主要集中在定时器中断、PWM输出以及输入捕获三个方面,本节课着眼于应用,介绍一下定时器的使用。定时器中断一、基础概念对没接触过定时器的新手来说,如果想要快速上手定时器的使用,首先要先对定时…

Python每日一练(20230318)

目录 1. 排序链表 ★★ 2. 最长连续序列 ★★ 3. 扰乱字符串 ★★★ 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 排序链表 给你链表的头结点 head ,请将其按 升序 …

卷积神经网络CNN识别MNIST数据集

这次我们将建立一个卷积神经网络,它可以把MNIST手写字符的识别准确率提升到99%,读者可能需要一些卷积神经网络的基础知识才能更好的理解本节的内容。 程序的开头是导入TensorFlow: import tensorflow as tf from tensorflow.examples.tutor…

C语言老题新解16-20 用命令行打印一些图案

文章目录11 打印字母C12 输出国际象棋棋盘。13 打印楼梯,同时在楼梯上方打印两个笑脸。14 输出9*9 口诀。15 有一道题要输出一个图形,然后Very Beautiful。11 打印字母C 11 用*号输出字母C的图案。 讲道理这绝对不该是个新人能整出来的活儿&#xff0c…

TCP/IP协议栈之数据包如何穿越各层协议(绝对干货)

所有互联网服务,均依赖于TCP/IP协议栈。懂得数据是如何在协议栈传输的,将会帮助你提升互联网程序的性能和解决TCP相关问题的能力。 我们讲述在Linux场景下数据包是如何在协议层传输的。 1、发送数据 应用层发送数据的过程大致如下: 我们把…

蓝桥杯嵌入式第五课--输入捕获

前言输入捕获的考题十分明确,就是测量输入脉冲波形的占空比和频率,对我们的板子而言,就是检测板载的两个信号发生器产生的信号:具体来说就是使用PA15和PB4来做输入捕获。输入捕获原理简介输入捕获能够对输入信号的上升沿和下降沿进…

WorkTool企微机器人接入智能问答

一、前言 最新版的企微机器人已经集成 Chat ,无需开发可快速搭建智能对话机器人。 从官方介绍看目前集成版本使用模型为 3.5-turbo。 二、入门 创建 WorkTool 机器人 你可以通过这篇快速入门教程,来快速配置一个自己的企微机器人。 实现的流程如图&…

Windows与Linux端口占用、查看的方法总结

Windows与Linux端口占用、查看的方法总结 文章目录Windows与Linux端口占用、查看的方法总结一、Windows1.1Windows查看所有的端口1.2查询指定的端口占用1.3查询PID对应的进程1.4查杀死/结束/终止进程二、Linux2.1lsof命令2.2netstat命令一、Windows 1.1Windows查看所有的端口 …

基于GPT-4的免费代码生成工具

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

SpringCloud五大核心组件

Consul 等,提供了搭建分布式系统及微服务常用的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性token、全局锁、选主、分布式会话和集群状态等,满足了构建微服务所需的所有解决方案。 服务发现——Netflix Eureka …

7个最受欢迎的Python库,大大提高开发效率

当第三方库可以帮我们完成需求时,就不要重复造轮子了 整理了GitHub上7个最受好评的Python库,将在你的开发之旅中提供帮助 PySnooper 很多时候时间都花在了Debug上,大多数人呢会在出错位置的附近使用print,打印某些变量的值 这个…

算法竞赛必考算法——动态规划(01背包和完全背包)

动态规划(一) 目录动态规划(一)1.01背包问题1.1题目介绍1.2思路一介绍(二维数组)1.3思路二介绍(一维数组) 空间优化1.4思路三介绍(输入数据优化)2.完全背包问题2.1题目描述:2.2思路一(朴素算法)2.3思路二(将k优化处理掉)2.4思路三(优化j的初始条件)总结1.01背包问题…