首页 > 其他分享 >UI自动化中上传与唤醒弹窗

UI自动化中上传与唤醒弹窗

时间:2022-12-13 16:46:18浏览次数:55  
标签:唤醒 selenium ui 自动化 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自动化技术已经没有可用的了,这也是职业生涯中脑细胞死得比较多的一次。像是行走到了神经的末梢,已然穷途末路,或许降维打击可以奏效,开辟新的十字路口才是全新的视角。如果产品能够与对方网站协调好,或许能复活业务,但是没法协调,所以业务只能死。

标签:唤醒,selenium,ui,自动化,UI,上传,弹窗
From: https://www.cnblogs.com/teark/p/16979226.html

相关文章

  • spring mvc环境之UI到控制器的自定义类型转换(十三)
     spring其实有默认的类型转换,比如前端表单提交数字的字符串,在控制器可接收为int或string都是没有错的.另外控制器也可以把前端数据接收为一个对象.即使spring为我们考虑......
  • 局域网 大文件分片上传处理
    ​ HTML部分 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="up6.index" %><!DOCTYPE html PUBLIC "-//W3C//DTDXH......
  • 企业数据自助分析的基础:用好瓴羊Quick BI 数据填报
    日前,行业咨询机构赛迪顾问发布了《2021-2022年中国企业级应用软件市场研究年度报告》。《报告》显示,2021年中国企业级应用软件市场快速回升,市场规模突破606亿元,增速高达16.2......
  • 【校招VIP】[约起来] 接口设计1:图片上传接口
    今天来看商业实战项目约起来的第一个模块,活动发布模块的接口设计,这期课程包括两个接口,一个是图片上传,一个是活动发布后的提交。首先了解图片上传接口,常规的图片上传需要前......
  • 【Unity Shader】Special Effects(二)BorderFlow 边框流动(UI)
    更新日期:2021年8月23日。Github源码:​​​[点我获取源码]​​索引​​BorderFlow边框流动​​​​思路分析​​​​流光区域​​​​流光区域的中心点​​​​流光区域的......
  • Unity UGUI图文混排源码(一)
    我从一开始想到的图文混排的概念都是通过文字间的空隙去粘贴一张图片,这样确定图片前面文字的最后一个位置变成了最主要的参数,接下来就给出两种解决方案首先,先发UGUI源码的一......
  • Unity UGUI基础之Text
    Text作为UGUI最基础的控件以及最常用的控件,它在项目中的应用绝对可以算是最多的,任何一个UI界面可以说都离不开它,它的基本属性如下:一、recttransform组件:recttransform(矩形......
  • Unity UGUI实现图文混排
    目前在unity实现图文混排的好像都是通过自定义字体然后在文本获取字符的位置,用图片替换掉图片标签,这样对于支持英文来说,并没有什么影响。然后对于中文来说就是一个相当麻烦......
  • 【Unity】 HTFramework框架(三十九)UI的数据驱动模式,MVVM
    更新日期:2020年10月24日。Github源码:​​​[点我获取源码]​​​Gitee源码:​​[点我获取源码]​​索引​​UI的数据驱动模式​​​​使用​​​​数据模型​​​​Bindabl......
  • Unity UGUI无限列表(Infinite List)
    更新日期:2020年10月16日。Github源码:​​​[点我获取源码]​​索引​​InfiniteList​​​​使用​​​​创建InfiniteListScrollRect​​​​InfiniteListScrollRect参数......