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

如何使用Selenium与Jenkins的window元素(用于文件上传)交互?

窦涵忍
2023-03-14

我正在使用Java和Selenium来自动化我的测试。我的一个测试需要从计算机上传图像。我使用Robot对象来识别上传窗口并设置文件的路径。通过IntelliJ运行测试时,一切正常,因为浏览器位于前面,包括上传窗口。当我通过Jenkins运行测试时,浏览器和上传窗口仍然位于后面,无法上传文件

我尝试了几种方法将窗口放在最前面,它们只有在通过IntelliJ直接运行时才能工作,但詹金斯仍然存在问题。

驾驶员切换到()。窗口(driver.getWindowHandle());或者((JavascriptExecutor)驱动程序)。executeScript(“window.focus();”;

知道如何处理这个上传窗口吗?

public static void uploadFile(String filePath) throws AWTException
    {
        //Copy the file path to the clipboard
        SystemOps.setClipboardData(filePath);

        Robot robot = new Robot();
        
        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);

        sleepUninterruptibly(3000);
    }

在此输入图像描述

共有1个答案

梁丘兴腾
2023-03-14

这就是我为解决这个问题所做的:

我从他们的网站安装了AutoIt FULL INSTALLATION:https://www.autoitscript.com/site/autoit/downloads/

然后安装AutoIt编辑器(同一页),但重定向到这里:https://www.autoitscript.com/site/autoit-script-editor/downloads/

过去,他们有一台录音机,可以录制AutoIt脚本,但现在没有了。要下载录音机,您可以从这里下载zip:https://www.autoitscript.com/autoit3/files/archive/autoit/autoit-v3.3.14.0.zip将其解压缩,复制“Extras”文件夹下的“Au3Record”文件夹,并将其放入现有的“Extras”文件夹中。此recorder exe文件允许您记录在基于窗口的应用程序上执行的步骤,并将其转换为脚本

我的方法是创建一个函数来复制文件路径并将其粘贴到上传窗口,而不是然后键入它,因为我不想/知道如何每次都修改exe文件,它以这种方式为我工作。

打开文本文件并粘贴以下代码:

_WinWaitActivate("Open","")
Send("{ALTDOWN}n{ALTUP}{CTRLDOWN}v{CTRLUP}")
MouseClick("left",514,441,1)

(Alt N只是为了确保我们专注于文件输入字段)

将文件另存为上载文件。au3在你的项目中的某个地方。

将文件转换为. exe文件:

打开AUT2 EXE文件夹下的“AUT2 EXE”。转化为。创建的au3文件。exe将文件放入项目中。

代码:

public static void uploadFile(String filePath) throws IOException
{

//Copy the file path to the clipboard
SystemOps.setClipboardData(filePath);

    //Execute the exe + Location of folder 
    Runtime.getRuntime().exec("./AutoItExeFiles/uploadFile.exe");

    Uninterruptibles.sleepUninterruptibly(milliseconds, TimeUnit.MILLISECONDS);
}

 /**
 * Sets any parameter string to the system's clipboard.
 * @param string the string to copy to the clipboard
 */
public static void setClipboardData(String string)
{
    //StringSelection is a class that can be used for copy and paste operations.
    StringSelection stringSelection = new StringSelection(string);
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
}
 类似资料:
  • 我需要在IE11上测试一个网站,所以我用IEDRiver做了一个selenium测试项目。我也使用Maven。在local中一切都很好,我现在不得不使用Jenkins来启动我的测试。 我创建了一个简单的工作来尝试我的一个测试。Jenkins找到我的pom.xml,用IEDriver打开浏览器,导航到我的url,然后问题就开始了。 我的测试在本地运行时所做的工作: 点击element2进入下一页;

  • 我需要与此元素进行交互,以使用硒,cucumber和java注销,但它不工作: 期望元素映射 控制台上显示的消息 下面是我代码的一部分,只有我用来尝试注销的方法,记住对于其他映射它是有效的:

  • 如何使用selenium webdriver通过窗口提示从本地上传文件? 我想执行以下操作: 点击窗口上的“浏览”选项 从窗口提示符转到保存文件的本地特定位置 选择文件,然后单击“打开”以上传文件。

  • 问题内容: 我对詹金斯(Jenkins)非常陌生,我一直在尝试使用curl来完成我的工作。伴随着这种卷曲,我想将文件发送到Jenkins,该文件应放在我的工作区的特定目录中。我一直在大量搜索,但是似乎找不到清晰的文档来引导我解决问题。请指导。我也查看了Google和StackOverflow上的其他文章,但找不到我想要的东西。 curl -X POST JENKINS_URL / job / JO

  • 问题内容: 如何使用selenium测试工具在Web应用程序上上传图片?我正在使用python。 我尝试了很多事情,但没有任何效果。 问题答案: 上载输入控件将打开一个本机对话框(由浏览器完成),因此通过Selenium单击控件或浏览按钮将仅弹出对话框,并且测试将挂起。 解决方法是通过JavaScript设置上传输入的值(在Java中是通过JavascriptExecutor完成),然后提交表单。

  • 问题内容: 谁能让我知道如何使用Java代码使用Selenium上传文件? 当我单击应用程序中的按钮时,它将在新窗口中打开,可以用来选择上传文件。Silverlight(C#)开发的浏览按钮。 问题答案: 首先确保输入元素可见 正如Mark Collin在此处的讨论中所述: 不要单击浏览按钮,它会触发操作系统级别的对话框并有效地停止测试。 相反,你可以使用: myUploadElement是该元素