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自动 ...
随机推荐
- Permanently added the RSA host key for IP address '192.30.253.113' to the list of known hosts.
$git push origin master 报错: Warning: Permanently added the RSA host key for IP address '192.30.253.1 ...
- Spring Cloud GateWay基于nacos如何去做灰度发布
如果想直接查看修改部分请跳转 动手-点击跳转 本文基于 ReactiveLoadBalancerClientFilter使用RoundRobinLoadBalancer 灰度发布 灰度发布,又称为金丝 ...
- 24V转5V,24V转3.3V稳压芯片的电路图,,PCB和BOM
1,PW6206与PW6513系列是一款高精度,40V高输入电压,低静态电流,低压降线性稳压器具有高纹波抑制.在VOUT=5V&VIN=7V时,负载电流高达300mA,(输入与输出电压的压差越 ...
- 盘点现在用的SqlServer 5种分页方式和拉姆达表达式分页,进来看看吧。
现在基本上大家都在使用各种轮子自带的分页,大家是否还记得sql分页怎么写? 今天我们就来盘一盘怎么写和用哪种方式写. 欢迎大家评论区讨论. 1.ROW_NUMBER() OVER()方式(SQL201 ...
- 线程、GIL全局解释器锁、进程池与线程池
目录 多进程实现TCP服务端并发 互斥锁代码实操 线程理论 创建线程的两种方式 多线程实现TCP服务端并发 线程的诸多特性 GIL全局解释器锁 验证GIL的存在 GIL与普通互斥锁 python多线程 ...
- LeetCode HOT 100:最大子数组和
题目:53. 最大子数组和 题目描述: 给你一个整数数组,在该数组的所有子数组中,找到一个子数组中所有元素相加和最大,返回这个最大的和.子数组就是一个数组中,由一个或几个下标连续的元素,组成的小数组, ...
- python 实现DES加解密
from pyDes import * import base64 class Des3(object): def __init__(self, key, iv): # 这里密钥key长度必须为16/ ...
- C/C++随堂笔记
注释:行注释 块注释: (1)#if 0 #endif (2)/* */ <>:表示系统文件 <stdlib.h>+syetem 调用windows中的程序 QT中 c ...
- 【转载】EXCEL VBA-区域选择
1- 区域命名 ThisWorkbook.Names.Item("foo").RefersTo =Tabelle1!$A$1:$B$1 ThisWorkbook.Names.Ite ...
- 学习.NET MAUI Blazor(三)、创建.NET MAUI Blazor应用并使用AntDesignBlazor
大致了解了Blazor和MAUI之后,尝试创建一个.NET MAUI Blazor应用. 需要注意的是: 虽然都叫MAUI,但.NET MAUI与.NET MAUI Blazor 并不相同,MAUI还 ...