【发布时间】:2019-10-16 09:19:57
【问题描述】:
用java在selenium webdriver中上传文件的最佳方法是什么?
--使用发送键 --使用自动 --使用机器人类
如果我想使用 autoit,如何在 maven 项目中使用
我可以在 selenium webdriver 中上传文件而不提供硬编码路径吗?
【问题讨论】:
用java在selenium webdriver中上传文件的最佳方法是什么?
--使用发送键 --使用自动 --使用机器人类
如果我想使用 autoit,如何在 maven 项目中使用
我可以在 selenium webdriver 中上传文件而不提供硬编码路径吗?
【问题讨论】:
是的,你可以在 maven 项目中使用 autoit。
String getLocation=Constant.currentDirectory+"\\testExplorer.exe "+ uploadFileName;
Runtime.getRuntime().exec(getLocation);
这里的uploadfilename是你要上传的文件名 您可以使用 AutoIt 编辑器创建 .exe 文件。通过使用以下代码,您可以参数化要上传的文件名
ControlFocus("Open","","Edit1")
ControlSetText("Open","","Edit1",$CmdLine[1])
ControlClick("Open","","Button1")
【讨论】:
在你的 pom- 中使用以下两个依赖项 注意:通过使用 Jcob API,您实际上可以直接在您的 selenium 代码中编写/复制粘贴 autoit 脚本,而无需将其作为编译的可执行 exe 脚本..
<dependency>
<groupId>autoitx4java</groupId>
<artifactId>autoitx4java</artifactId>
<version>1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.hynnet/jacob -->
<dependency>
<groupId>com.hynnet</groupId>
<artifactId>jacob</artifactId>
<version>1.18</version>
</dependency>
如何使用它的例子- 1.将Jacob dll保存在您的项目路径中,并将其路径设置如下-
System.setProperty(LibraryLoader.JACOB_DLL_PATH,
System.getProperty("user.dir") +
"/automation/src/test/java/externalLib/jacob-
1.20-x64.dll");
在您的应用程序中单击上传/选择文件,并使用常规 selenium click- clickOnElement(findElementByXpath(chooseFileBtn)); 等待(2);
现在编写您的代码(您需要为此安装 autoIt 并捕获脚本),如下所示-
AutoItX autoIt = new AutoItX(); 字符串标题=“打开”; Assert.assertTrue(autoIt.winWaitActive(title, "Open", 20)); autoIt.controlSend(title, "", "Edit1", filePath); autoIt.controlClick(title, "", "Button1");
注意:AutoIt 控件 [controlSend 和 controlClick ] 现在将直接在我们的代码中工作,并完成这项工作。
【讨论】: