干货 | web自动化总卡在文件上传和弹框处理上?

news2024/11/16 9:20:22

在有些场景中,需要上传文件,而 Selenium 无法定位到弹出的文件框,以及网页弹出的提醒。这些都是需要特殊的方式来处理。

input 标签使用自动化上传,先定位到上传按钮,然后 send_keys 把路径作为值给传进去.

如图所示,是企业微信文件上传的页面 定位到标签为 input,type 为 file 的元素信息,然后使用 send_keys 把文件路径作为值给传进去。

1080×459 67.3 KB

driver.find_element(By.CSS_SELECTOR, "#js_upload_input")\ .send_keys("./hogwarts.png")

在页面操作中有时会遇到 JavaScript 所生成的 alert、confirm 以及 prompt 弹框,可以使用switch_to.alert()方法定位到。然后使用 text、accept、dismiss、send_keys 等方法进行操作。

  • switch_to.alert():获取当前页面上的警告框。

  • text:返回 alert、confirm、prompt 中的文字信息。

  • accept():接受现有警告框,即点击确定。

  • dismiss():解散现有警告框,即点击取消。

  • send_keys(keysToSend):发送文本至警告框。keysToSend:将文本发送至警告框。

输入一段文本点击比如提交按钮,会弹出确认内容的弹框,这种场景可以使用下面的方式处理:

"""Alert弹窗获取文本与确认操作"""driver.get("http://sahitest.com/demo/alertTest.htm")

driver.find_element_by_name("b1").click()#添加显示等待,等待弹框的出现WebDriverWait(driver, 5, 0.5).until(EC.alert_is_present())#切换到弹框alert = driver.switch_to.alert#打印弹框的文本print(alert.text)#点击确定alert.accept()#不点击确定,解除弹框alert.dismiss()

""" Prompt 弹窗获取文本、输入内容、确认操作 """driver.get("http://sahitest.com/demo/promptTest.htm")

driver.find_element_by_name("b1").click()#添加显示等待,等待弹框的出现WebDriverWait(driver, 5).until(EC.alert_is_present())#切换到弹框alert = driver.switch_to.alert#向弹框输入一段文本alert.send_keys('Selenium Alert弹出窗口输入信息')#点击确定alert.accept()

""" Comfirm弹窗获取文本、确认、取消操作 """driver.get("http://sahitest.com/demo/confirmTest.htm")

driver.find_element_by_name("b1").click()# 等待弹出窗口出现WebDriverWait(driver, 5).until(EC.alert_is_present())#切换到弹框alert = driver.switch_to.alert#点击确定alert.accept()#点击取消alert.dismiss()

Web自动化中文件上传与弹框处理就先讲到这里啦,大家还想看什么内容的文章也可以留言告诉我们哦!

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

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

相关文章

【计算机网络-物理层】通信基础

文章目录1 码元、速率、波特、带宽1.1 码元1.2 波特率1.3 比特率1.4 带宽1.5 相关例题2 奈氏准则、香农定理2.1 奈氏准则(采样定理)2.2 香农定理2.3 相关例题3 编码方式3.1 归零编码(RZ)3.2 非归零编码(NRZ&#xff09…

【简单DP】[NOIP2007 普及组] 守望者的逃离

P1095 [NOIP2007 普及组] 守望者的逃离 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)题意:思路:独立做出来的一道DP!一开始我去模拟过程找子问题,然后去找阶段是什么本来想的是以路程作为阶段,但是1e8数组开不下那么…

如何看待PyTorch 2.0?

作者|吴育昕 1 为什么是TorchDynamo Graph capture 把用户 Python 写的模型代码变成 graph,是一切编译的根基。而 PyTorch 在试了这么多方案之后似乎已经锁定 TorchDynamo 作为 graph capture 的未来方向了,所以写一点关于 TorchDynamo 的…

假如面试官问你Babel的原理该怎么回答

1. 什么是 Babel 简单地说,Babel 能够转译 ECMAScript 2015 的代码,使它在旧的浏览器或者环境中也能够运行。 // es2015 的 const 和 arrow function const add (a, b) > a b;// Babel 转译后 var add function add(a, b) {return a b; };Babel…

pwr | 谁说样本量计算是个老大难问题!?(二)(独立样本均值篇)

1写在前面 上次介绍了两组发生率的样本量计算方法,通过pwr包进行计算非常简单,可以有效地减少我们的工作量。😘 有时候我们想比较两组之间的均值,如何计算样本量又一次成了老大难问题。🤒 本期我们还是基于pwr包&#…

【自学Java】Windows安装PyCharm IDE

Windows安装PyCharm IDE PyCharm下载 PyCharm下载地址 https://www.jetbrains.com/pycharm/PyCharm下载 打开上面的链接,打开 Python 的开发工具 PyCharm 的下载页面,如下图所示: 这里我们点击 Download,跳转到新的页面&#…

错过短视频,微博奔向新浪

以后新浪或许会被叫做“微博新浪”。 2022年12月23日晚,港股微博发布公告称,拟斥资15亿元收购新浪网技术有限公司100%股权。此举被外界解读为微博将反向收购新浪。 曾经,微博还是新浪移动互联网时代的“船票”。随着门户网站逐渐凋零&#…

基于ODX/OTX诊断的整车扫描

| ODX (Open Diagnostic data eXchange) 是基于XML语言、开放的诊断数据格式,用于车辆整个生命周期中诊断数据的交互。它一开始由ASAM提出并形成标准MCD-2D,后来以ODX2.2.0为基础形成了ISO标准——ISO 22901-1。 | OTX (Open Test sequence eXchange) …

Redis主从复制哨兵模式

Redis主从复制&哨兵模式一 什么是Redis主从复制1.1 主从复制的架构1.2 主从复制的原理1.3 主库是否要开启持久化1.4 辅助配置(主从数据一致性配置)二 主从复制配置2.1 slave 命令2.2 配置文件三 主从复制常见问题四 Redis哨兵机制4.1 什么是哨兵模式…

WebSocket服务端和客户端代码示例

目录一、WebSocket简介二、WebSocket服务端代码示例三、WebSocket客户端代码示例四、运行服务端和客户端,查看输出结果一、WebSocket简介 WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信&#x…

UE4 优化笔记

一、衡量场景性能的指标(这些指标优化前就要先记录下来,这样才知道优化了多少!) 1.stat unit:单元的状态。最开始根据这个数据,确定大致的优化方向 Frame:每帧消耗的总时长 Game:游戏线程运行消耗的时间 D…

迭代最近点ICP点云配准

传统ICP存在匹配速度慢,误匹配率高等缺点。 粗配准是在不清楚两个点云的相对位置的情况下,找到这两个点云近似的旋转平移矩阵,主要是为精配准提供初始变换矩阵;精配准在已知旋转平移矩阵的情况下,通过多次迭代优化进一…

Redis超详细版教程通俗易懂

【狂神说Java】Redis最新超详细教程通俗易懂 一、缓存、关系型数据库、非关系型数据库 关系型数据库存放在磁盘上,读取数据需要IO操作,速度非常慢非关系型数据库存放在内存上,读取数据速度非常快两者关系:一般会将数据存储在关系…

BGP在数据中心的应用4——BGP配置再优化

注: 本文根据《BGP in the Datacenter》整理,有兴趣和英文阅读能力的朋友可以直接看原文:https://www.oreilly.com/library/view/bgp-in-the/9781491983416/上一部分笔记请参考:https://blog.csdn.net/tushanpeipei/article/deta…

图论(3)单源最短路拓展

活动 - AcWing acw1137 如果我们确定了起点,那么就是一个模板题 选起点有两个办法:1.选取虚拟原点,连接家附近的所有车站。直接以虚拟原点作为我起点跑最短路即可。2.反向建图,取终点到家附近所有车站的dist,取min即…

JVM垃圾回收器-Serial回收器:串行回收

文章目录学习资料垃圾回收器Serial回收器:串行回收学习资料 【尚硅谷宋红康JVM全套教程(详解java虚拟机)】 【阿里巴巴Java开发手册】https://www.w3cschool.cn/alibaba_java JDK 8 JVM官方手册 垃圾回收器 Serial回收器:串行回…

JVM垃圾回收相关算法-垃圾清除阶段

文章目录学习资料垃圾回收相关算法垃圾清除阶段标记-清除(Mark - Sweep)算法复制算法标记-压缩(或标记-整理、Mark - Compact)算法分代收集算法增量收集算法分区算法学习资料 【尚硅谷宋红康JVM全套教程(详解java虚拟…

助力工业物联网,工业大数据项目介绍及环境构建【三】

01:业务系统结构 目标:了解一站制造中的业务系统结构 实施 数据来源 业务流程 油站站点联系呼叫中心,申请工单呼叫中心分派工单给工程师工程师完成工单工程师费用报销呼叫中心回访工单 ERP系统:企业资源管理系统,存…

RHCSE第一天(Linux的例行性工作)

文章目录Linux搭建服务器的准备工作第一章 Linux的例行性工作1.1 单一执行的例行性工作at1.1.1 at命令的实际工作过程1.1.2 at命令详解1.2 循环执行的例行性工作1.2.1 crontab命令的实际工作过程1.2.2 crontab命令详解1.3 实验实验一:定义三分钟之后显示hello实验二…

【前端】Vue项目:旅游App-(4)TabBar:Vant库实现功能与样式

文章目录目标代码和过程Vant库引入自定义样式初步修改样式修改修改active颜色icon调大实现路由跳转效果总代码修改的文件tab-bar.vuemain.js目标 前文手写了TabBar的样式和功能,本篇我们用vant库重新实现这些功能。 代码和过程 Vant库引入 Vant4 官方文档 安装&…