UI自动化中上传与唤醒弹窗
本篇想谈的是在ui自动化中对上传的一些理解,干货满满。
一.是否有必要唤醒弹窗
以selenium为代表的库在进行文件上传时,是可以直接对输入框 “发送” 文件的,其send_keys()方法本身不光意味着输入内容,还包括上传文件哦。上传文件的页面元素通常是以 input 标签出现,对其输入文件路径即可。
其它的库也有类似的方法,如 playwright 也有这种方法。
但是,并不是每一个文件上传都可以使用 send_keys() 方法的。只是在没必要唤醒弹窗的时候就不唤醒,毕竟用 send_keys() 方法能省去很多麻烦。
二.必须唤醒弹窗
在遇到 send_keys() 方法无法对文件进行上传时,这时首先检查一下元素是否正确,若确定元素没问题还是唤不醒,说明对方的网站对输入框做了一些防爬工作,不过没关系,可以用 click() 进行唤醒。
几乎每个ui自动化库都有 click() 方法,对于它的使用我无需多言。需要注意的是,点击操作分为很多种,除了内置的 click() 外,还有对 js 操作的click(),通常表现为 execute_js("arguments[0].click();") 的形式,同样的,很多ui自动化库都有该方法,除此之外,还有鼠标方法 mouse_down() 也能实现点击,基于键盘的点击 ctrl+o 等等。
在实际工作中,基于 js 的点击和键盘的方法确实起到很大作用。但他们不是百分之百有效的,我还真的遇到过什么方法都用尽了,还是无法唤醒弹窗的情况,真的很头疼。
三.选对库很重要
尽管不少人吐槽selenium,但在ui自动化领域中它仍是最优选择,掌握它的一些封装很重要,这是你的程序稳定性的关键。
读过我之前博客的朋友知道seliky库是我对它的封装,个人还算满意的库,喜欢的话可以 pip install seliky 来安装它。
工作迫使我不停地追求更好的解决方案,百度谷歌早已翻了个底朝天,最后还是承认,还得是selenium,其次选择 clicknium 吧,除此之外,都没什么用。恕我直言,真没什么用。
selenium和clicknium能解决绝大多数ui自动化中的问题,其中肯定包括 上传无法唤醒弹窗 的问题,还有 臭名昭著的防selenium反爬 的问题,总之一切selenium被针对了的问题,用clicknium几乎都能搞定。
四.上传交互
除了原生的send_keys()方法外,上传只能通过唤醒窗口的方式进行。
基于windows的电脑对上传有相关的支持,其它的系统简直一言难尽,在此不便多述。
不少朋友知道 autoit 这个东西,它可以制作一个上传器,来为 唤醒的窗口 实现界面的上传交互。读过我之前博客的朋友知道我写过一个很nb的上传器,解决了谷歌浏览器、火狐浏览器的文件上传的各种问题。但是比较它是一个exe程序,不太pythonic,所以后来我换成了更优雅的方式。
所以,uploads库应运而生,这是我写得自认为比较满意的库,喜欢的朋友可以 pip install uploads 来安装。
这样,以windows为代表的上传交互 解决了,仿佛一切安好。
五.业务died
就在今天,我的某条自动化爬虫相关的子业务线死了。虽然它相对而言不算主业务,但我还是很伤心。
归其原因,是因为连clicknium也无法唤醒弹窗,这导致没法上传我们的海量资源到对方网站。除此之外的ui自动化技术已经没有可用的了,这也是职业生涯中脑细胞死得比较多的一次。像是行走到了神经的末梢,已然穷途末路,或许降维打击可以奏效,开辟新的十字路口才是全新的视角。如果产品能够与对方网站协调好,或许能复活业务,但是没法协调,所以业务只能死。
UI自动化中上传与唤醒弹窗的更多相关文章
- UI自动化处理文件上传
UI自动化处理文件上传 import win32guiimport win32con def set_uploader(self, file_path): sleep(2) self.file_pat ...
- UI自动化页面需要选择上传文件
UI自动化页面上传文件,百度查的时候说有4中方法,简便的方法是安装SendKeys,但是百度说这个只支持python2.7的 我的python版本是3.7的,目前还只碰到了非<input typ ...
- Python—UI自动化完整实战
实战项目 均来源于互联网 测试报告2017年11月29日优化后的测试报告:https://github.com/defnngj/HTMLTestRunner 1.项目概述: 本实战已126邮箱为例子进 ...
- Python UI自动化
Python3--Uiautomator2--Pytest--Alure使用 官方源码GitHub地址:https://github.com/openatx/uiautomator2 介绍 uiaut ...
- 手机APP自动化之uiautomator2 +python3 UI自动化
题记: 之前一直用APPium直到用安卓9.0 发现uiautomatorviewer不支持安卓 9.0,点击截屏按钮 一直报错,百度很久解决方法都不可以,偶然间看见有人推荐:uiautomator ...
- 开发基于vue前端框架下的系统的UI自动化,记录总结踩的坑
在使用了pytest完成了一个系统的UI自动化后,因为系统的前端框架,是 基于VUE写的,这就让我编写脚本的时候踩了些坑. 无法用JS 修改标签属性,从而进行的操作 比如上传图片,我们的上传是这样子的 ...
- appium Ui自动化调起应用点击
appium Ui自动化调起微信并点击登录按钮的java代码(对的,就这么一丢丢). public class testWX { public static void main(String[] ar ...
- ui自动化笔记 selenium_webdriver,ui自动化框架(web)
Selenium学习笔记 selenium webdriver是业界公认ui自动化测试的标准,其封装的api可以对浏览器的任何地方进行操作 selenium2.0和selenium3.0的区别? 3. ...
- UI自动化之三种等待
UI自动化中常用三种等待 目录 1.强制等待 2.隐式等待 3.显示等待 1.强制等待 执行到某一条语句后,然后sleep(3),等待3秒后,才会继续执行后面的语句 2.隐式等待 隐式等待只需要声明一 ...
- UI自动化和selenium相关以及八大定位
一.UI自动化相关 1. UI自动化的本质(重点) 定位元素→操作元素→模拟页面操作→断言→测试报告 2. 适合UI自动化的场景 UI自动化的前提条件 (1)需求不能频繁变动 (2)UI稳定(UI自动 ...
随机推荐
- 解决Linux使用deepin-wine跑qq,tim打不开文件所在文件夹
前言 使用deepin-wine 跑qq,发现一个小bug 这里点击打开文件夹是没有效果的,包括在 tim 上也是这样 问题原因 出现这个问题是因为 deepin-wine 跑的 QQ,Tim 打开文 ...
- JavaEE Day13 Tomcat和Servlet
之前是web基础,现在是web核心 今日内容: web相关概念的回顾 开源的web服务器软件:Tomcat Servlet:整个web技术的核心[Servlet入门] 一.web相关概念的回顾 1.软 ...
- 【Hadoop学习】上:组成介绍、生态体系、环境准备、不同运行模式测试
目录: 入门(上) HDFS(中) MapReduce&Yarn(下) 优化(补充) 一.大数据概述 概念 特点:VVVV 应用场景 二.Hadoop到大数据生态 1.Hadoop生态圈.发展 ...
- Linux和shell面试内容
一.Linux 1.列出5个常用高级命令 ps -ef ps -aux df -h top io top xargs tail uptime netstat 2.查看磁盘使用情况.查看进程.查看端口号 ...
- 【Shell脚本案例】案例6:查看网卡实时流量
一.背景 监控,对服务器查看实时流量 了解服务器的数据传输量 二.说明 1.获取网络流量 ifconfig查看网卡就能看到数据包传输情况 2.可以使用工具查看 iftop cat /proc/net/ ...
- java并发数据结构之CopyOnWriteArrayList
CopyOnWriteArrayList是一个线程安全的List实现,其在对对象进行读操作时,由于对象没有发生改变,因此不需要加锁,反之在对象进行增删等修改操作时,它会先复制一个对象副本,然后对副本进 ...
- 分享一个你很可能不知道的Java异常实现的缺陷
前言 Java中一个大家熟知的知识点就是异常捕获,try...catch...finally组合,但是很多人不知道这里面有一个关于Java的缺陷,或者说是异常实现的一点不足之处. 我这边就通过一个很简 ...
- JavaScript入门⑨-异步编程●异世界之旅
JavaScript入门系列目录 JavaScript入门①-基础知识筑基 JavaScript入门②-函数(1)基础{浅出} JavaScript入门③-函数(2)原理{深入}执行上下文 JavaS ...
- Gradle 使用maven本地仓库 带来的思考
Gradle 使用maven本地仓库 带来的思考 本篇主要探究一下 在使用Gradle 的时候一般会配置 maven 的本地仓库的,那是不是Gradle 可以直接使用 maven本地仓库的jar呢 ? ...
- TIE: A Framework for Embedding-based Incremental Temporal Knowledge Graph Completion 增量时序知识图谱补全论文解读
论文网址:https://dl.acm.org/doi/10.1145/3404835.3462961 论文提出一种用增量学习思想做时序知识图谱补全(Temporal Knowledge Graph ...