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

如何做图像上传从一个文件夹在selenium网络驱动程序java

宋翔
2023-03-14

我正在使用selenium自动化移动网站。在我的测试用例中,我需要上传图像。点击显示文件上传弹出窗口时,有一个id为addimage的摄像头图像。检查此流的图像

超文本标记语言代码:

<div class="clearfix">
    <ul id="imageList"> </ul>
   <div id="uploadimginput">
       <a id="addimage" class="sprite camera"> </a>
   </div>
   <input id="image" class="w0" type="file" name="image">
</div>

从文件上传弹出,我想打开一个文件夹"估计",然后选择一个图像。

我怎么能做到这一点在硒java。

共有2个答案

艾原
2023-03-14

据我所知,这是一个窗口对话框,它不在浏览器的上下文中,因此不能直接由Selenium自动化。因此,您将不得不使用机器人/Sikuli/Autoit。

下面的代码是使用“Robot类”的方法。为了使用它,请从“java.awt包”即java导入所有类。awt。机器人,java。awt。事件KeyEvent,java。awt。工具包,java。awt。数据传输。StringSelection,java。awt。AWTException以及其他必要的导入:

//Code for clicking on the image button that brings up the window dialog box
  ...

//Putting all the absolute paths of the pics to upload(here, 3 files)
String arr[] = {"\"D:\\Pic1.jpg\"", "\"D:\\Pic2.jpg\"", "\"D:\\Pic3.jpg\""};

//Copying the path of the file to the clipboard     
StringSelection photo = new StringSelection(arr[0]+arr[1]+arr[2]); //Putting the path of the image to upload
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(photo, null);

//Pasting the contents of clipboard in the field "File name" of the Window Pop-up
Thread.sleep(5000); //Some sleep time to detect the window popup
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);

//To Click on the "Open" button to upload files
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
申高峯
2023-03-14

不要点击图像本身,这样弹出窗口就不会出现。

在你的html代码中应该有一个带有类型文件的输入元素。在Selenium测试中,您可以找到输入元素,并用您要添加的图像路径填充它。然后在输入元素周围提交表单。

Selenium框架将为您处理其余部分。对我来说,它适用于所有浏览器。

我认为这是一个比模拟键盘更干净的解决方案。

 类似资料:
  • 我有一个问题,上传文件到网络系统使用硒驱动程序。所以在我的页面上,我没有任何输入来设置文件路径,而且我在网络上找到的大多数解决方案都不适合我。我必须点击上传文件按钮,然后在窗口对话框中设置文件的路径。我找到了winforms SendKeys类中使用的方法: 它的工作,但只有当测试有完全控制的机器(如果没有-路径已发送到某处不对话)。这就是问题所在,因为我无法完全控制运行测试的机器。你知道不使用S

  • 我正在使用SeleniumWebDriver进行网站测试。现在我想在SeleniumWebDriver中设置TestNG。怎么可能呢?testng有JAR文件吗?

  • 我使用以下代码移动图像一个文件夹到另一个文件夹,但它不工作。 如下 但还是不行谢谢

  • 问题内容: 我正在使用此代码 将图片从我的android应用上传到用户的google驱动器帐户。 但是,如何修改代码以将图像上传到名为“ myFolder”的文件夹? 表示该文件夹存在,如果不存在,请创建该文件夹,然后将图像上传到该文件夹​​。 问题答案: 你需要为文件上传到特定的文件夹,做的是文件夹的ID添加到该文件的父母(参考文档的)。 因此,您需要做的全部事情是: 在驱动器中找到文件夹 创建

  • 我正在使用Phantomjs驱动程序运行一个selenium webdriver脚本headless。我在上传文件时遇到了问题,因为在普通浏览器(firefox或chrome)上,它会弹出操作系统对话框,允许我在机器中找到文件并上传。如何使用ghostDriver(Phantomjs驱动程序)来实现这一点?谢谢

  • 我正试图在eclipse中运行我的第一个webdriver脚本。使用jre1。8.0_1111. 我使用了下面的代码,但它显示了错误。请帮我查一下密码。 错误堆栈 线程“main”java中出现异常。lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver设置。壁虎。驱动系统属性;有关更多信息,请参阅github。com/mozilla/geckodr