【利用Selenium+autoIt实现文件上传】

利用Selenium+autoIT实现文件上传

当你看到这篇文章时,证明你遇到了和我一样的难题。正常情况下我们利用selenium完全可以实现表单的提交和文件上传等操作。但当你遇到了反扒设计比较厉害,整个表单都不是常规的input的时候,selenium就有点抓瞎了。
我要实现的需求是在某个官网做表单自动提交,在文件上传的时候发现对方网站根本不能像往常一样在value属性添加文件路径就OK,完全是一个动态的js去编辑,鼠标焦点一移开,立马就删除了。当时我真的很崩溃,没办法,我只能考虑其他的方案去处理,Selenium没办法监控到点击上传弹出来的文件上传框信息,我在网上查了很多资料,最终决定使用autoIt这个中间件来实现文件上传。
主要思路是:
selenium点击上传弹框,休眠一定时间后调用autoIT脚本上传文件,当然要有重试机制,这个恶心的网站不仅加载慢,而是全是js渲染,有时候你点击了但是弹框并没有出现。

autoIt脚本制作

第一步肯定要去官网下载最新版本的autoIT软件了,下载免安装的zip包就可以了。
下载之后解压到制定目录,对于弹框的元素定位网上有很多教程和案例,我就不在细说了,直接提供脚本给大伙。

; Check if the window is open
If WinExists("[CLASS:#32770]", "打开") Then
    WinWaitActive("[CLASS:#32770]", "打开", 10)
    ; Focus on the file name input field
    ControlFocus("[CLASS:#32770]", "打开", "Edit1")
    ; Set the file path in the input field
    ControlSetText("[CLASS:#32770]", "打开", "Edit1", $CmdLine[1])
    ; Sleep for stability (optional, adjust as needed)
    Sleep(500)
    ; Click the Open button
    ControlClick("[CLASS:#32770]", "打开", "[CLASS:Button; INSTANCE:1]")
    ; Or use the button text to make it

相关推荐

  1. 利用Selenium+autoIt实现文件

    2024-07-16 16:10:02       21 阅读
  2. 文件实现

    2024-07-16 16:10:02       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 16:10:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 16:10:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 16:10:02       58 阅读
  4. Python语言-面向对象

    2024-07-16 16:10:02       69 阅读

热门阅读

  1. 专升本(英语)1.0.2-july 15th 升本:210天

    2024-07-16 16:10:02       17 阅读
  2. day30【LeetCode力扣】18.四数之和

    2024-07-16 16:10:02       19 阅读
  3. 力扣 hot100 -- 技巧

    2024-07-16 16:10:02       21 阅读
  4. 【webpack开发环境下的配置】

    2024-07-16 16:10:02       22 阅读
  5. Win7电脑修改网卡配置连接千兆网络的方法

    2024-07-16 16:10:02       22 阅读
  6. 发布自动化:Gradle发布插件的配置全攻略

    2024-07-16 16:10:02       20 阅读
  7. MySQL中为什么要使用索引合并(Index Merge)

    2024-07-16 16:10:02       23 阅读
  8. 来聊一聊MySQL InnoDB的LSN

    2024-07-16 16:10:02       18 阅读