当前位置: 首页 > 知识库问答 >
问题:

使用Selenium自动上传图像,但不使用AutoIt

宋弘壮
2023-03-14

我在我公司的网站上有一个非传统的图像上传按钮。我想有一个自动的方式来上传使用此按钮的图像,但不必使用像AutoIt这样的工具,以便与文件资源管理器进行交互。

以下是此按钮的HTML示例:

<button ng-click="onClick()" ng-disabled="readOnly" accepted-types="image/*" on-files-selected="onFilesSelected" allow-multiple="true" readonly="readonly">Add images</button>

它与通常的输入元素有点不同,例如

上传图片是否有任何破解或解决方法?我在考虑覆盖onClick()函数从指定位置进行读取(这种方法似乎不太可行),或者可能拦截打开文件浏览器的事件并尝试从那里破解,但这些都只是解决问题的不受支持和未经测试的方法

是否有可能在另一个浏览器自动化工具中实现这一点,比如微软的剧作家?


共有1个答案

叶文博
2023-03-14

使用JACOB它提供了java原生接口,您可以在其中使用带硒的AutoIt功能这里是一个示例,我在大多数地方使用它,如MSTeams,Slack for Automation[上传功能]它可以完成这项工作。

步骤1:下载JACOB jar

步骤2:注册AutoIt COM库,例如regsvr32 AutoItX3_x64.dll

  • 雅各布。罐子

[此代码与文件浏览器交互]


import com.jacob.com.LibraryLoader;

import autoitx4java.AutoItX;

public class Attachments {

   public void uploadAttachments(){

        File f = new File("Location");
        File[] fil =f.listFiles();

        //Upload Button Xpath
        WebElement uploadFromComp = driver.findElement(By.xpath("//span[contains(text(),'Upload from my computer')]"));
        uploadFromComp.click();
        Thread.sleep(5000);

        String jacobDllVersionToUse;
        if (jvmBitVersion().contains("32")) {
            jacobDllVersionToUse = "jacob-1.19-x86.dll";
        } else {
            jacobDllVersionToUse = "jacob-1.19-x64.dll";
        }

        File file1 = new File("registerAutoItDll", jacobDllVersionToUse);
        System.setProperty(LibraryLoader.JACOB_DLL_PATH, file1.getAbsolutePath());

        AutoItX x = new AutoItX();
        x.winWaitActive("Open");
        x.sleep(5000);
        x.send(fil[j].getAbsolutePath());
        x.send("{ENTER}", false);
}}

我希望它对你有用。

 类似资料:
  • 我正试图用Alamofire将图像上传到服务器,但我的代码不起作用。这是我的代码: 这是urlRequestWithComponents方法: 这就是我在控制台得到的: 请求{URL:http://tranthanhphongcntt.esy.es/task_manager/IOSFileUpload/ }响应可选({URL:http://tranthanhphongcntt.esy.es/tas

  • 我有以下代码: 美元这个- 没有出现警告/错误,提交成功,但我上传的图像不会显示在文件夹中/uploads/user/“我不知道为什么,我不知道如何检查我的上传路径是否正确。我希望有一些方向。但我确实用相同的代码从不同的函数上传了它的工作和图像显示。 我目前使用localhost。 表格如下:

  • 我正在使用翻新上传图像/文件 在这里,我发布了我的API调用以上传图像 请帮助我如何为这个调用编写接口,我已经用@part和@PartMap试过了,但是不起作用

  • 经过一些研究,我发现了一个用于多部分文件上传的开放库。在我的情况下,我想上传一个图像使用PUT请求,其中的图像要么是从画廊或相机选择。以下是我正在使用的资源:1。https://github.com/gotev/android-upload-service2.https://www.simplifiedcoding.net/android-upload-image-to-server/#comme

  • 问题内容: 有什么办法可以使它工作? [错误] selenium.common.exceptions.InvalidArgumentException:消息:未找到文件:https : //ercess.com//images//events//-Blockchain-2019-36613-banner.png 问题答案: 您首先需要将图像下载到计算机上,然后将其上传… 您可以使用: 然后发送:

  • 问题内容: 我使用,并将一些图像加载到上。 现在,我需要一次上传所有这些图像。正在使用,我该怎么做? 我浏览了文档,有一个名为的部分。但是,我无法上传中的图像。 *注意:我想以Byte Array 的形式上传图像。我怎样才能做到这一点?* 我到目前为止的代码, 问题答案: 试试这个。