如何参数化 AutoIt 脚本以处理 cross-browser window 弹出标题和文件?
How to parametrize an AutoIt script to handle cross-browser window popup titles and files?
我的 AutoIt 脚本应该使用浏览器上传文件:
ControlFocus("Open","","Edit1")
ControlSetText("Open","","Edit1","C:\MWUploads\myFile.pdf")
ControlClick("Open","","Button1")
我正在使用上述脚本从 Selenium WebDriver 编译的可执行文件 Java:
Runtime.getRuntime().exec(autoItScExecutableDir+"autoitScript.exe");
根据浏览器,上传弹出窗口的标题 window 不同(Google Chrome 和 Microsoft Edge 是“打开”,而 Firefox 是“文件上传”)。我怎样才能让它适用于任何浏览器上的任何文件路径,如下所示?
Runtime.getRuntime().exec(myWinTitle, myLocator, myFileToUploadPath);
//附加 img 以获得更多说明,当按照答案
尝试时
这是来自 else 块的 sysOut 的 o/p-
E:\AOS\src\test\resources\AutoItScripts\dynamicAutoItScript.exe File Upload
E:\AOS\src\test\resources\FilesToUpload\Greetings.png
这是实际发生的事情-
您可以将参数发送到autoitScript.exe。
跨浏览器差异
上传 Window 根据浏览器变化:
- Firefox -> 上传 window 标题是:文件上传
- Chrome 和 Edge -> 上传 window 标题是:打开
- Internet Explorer -> 上传 window 标题是:选择要上传的文件
但是这些保持不变:
- 位置栏(工具栏Window32 on windows,最上面的那个)
- 文件名栏
- 打开按钮
AutoIt 脚本是:
Sleep(500);
If $CmdLine[0] > 0 Then
ControlFocus($CmdLine[1],"","Edit1")
ControlSetText($CmdLine[1],"","Edit1",$CmdLine[2])
ControlClick($CmdLine[1],"","Button1")
EndIf
参数说明:
睡觉(500);是半秒的等待。我在一台硬盘较慢的旧电脑上遇到了一些问题。结果,上传 window 没有及时打开以执行脚本。安全比抱歉好。
$CmdLine[0] 包含发送的参数数量。如果没有发送参数,它将包含 0。
$CmdLine[1] - 代表上传window标题
$CmdLine[2] - 表示在文件名栏中发送的文本
在Java中的用法:
火狐:Runtime.getRuntime().exec("E:\compiledScript.exe \"File Upload\" E:\file.txt");
Chrome: Runtime.getRuntime().exec("E:\compiledScript.exe Open E:\file.txt");
我的 AutoIt 脚本应该使用浏览器上传文件:
ControlFocus("Open","","Edit1")
ControlSetText("Open","","Edit1","C:\MWUploads\myFile.pdf")
ControlClick("Open","","Button1")
我正在使用上述脚本从 Selenium WebDriver 编译的可执行文件 Java:
Runtime.getRuntime().exec(autoItScExecutableDir+"autoitScript.exe");
根据浏览器,上传弹出窗口的标题 window 不同(Google Chrome 和 Microsoft Edge 是“打开”,而 Firefox 是“文件上传”)。我怎样才能让它适用于任何浏览器上的任何文件路径,如下所示?
Runtime.getRuntime().exec(myWinTitle, myLocator, myFileToUploadPath);
//附加 img 以获得更多说明,当按照答案
尝试时这是来自 else 块的 sysOut 的 o/p-
E:\AOS\src\test\resources\AutoItScripts\dynamicAutoItScript.exe File Upload
E:\AOS\src\test\resources\FilesToUpload\Greetings.png
这是实际发生的事情-
您可以将参数发送到autoitScript.exe。
跨浏览器差异
上传 Window 根据浏览器变化:
- Firefox -> 上传 window 标题是:文件上传
- Chrome 和 Edge -> 上传 window 标题是:打开
- Internet Explorer -> 上传 window 标题是:选择要上传的文件
但是这些保持不变:
- 位置栏(工具栏Window32 on windows,最上面的那个)
- 文件名栏
- 打开按钮
AutoIt 脚本是:
Sleep(500);
If $CmdLine[0] > 0 Then
ControlFocus($CmdLine[1],"","Edit1")
ControlSetText($CmdLine[1],"","Edit1",$CmdLine[2])
ControlClick($CmdLine[1],"","Button1")
EndIf
参数说明:
睡觉(500);是半秒的等待。我在一台硬盘较慢的旧电脑上遇到了一些问题。结果,上传 window 没有及时打开以执行脚本。安全比抱歉好。
$CmdLine[0] 包含发送的参数数量。如果没有发送参数,它将包含 0。
$CmdLine[1] - 代表上传window标题
$CmdLine[2] - 表示在文件名栏中发送的文本
在Java中的用法:
火狐:Runtime.getRuntime().exec("E:\compiledScript.exe \"File Upload\" E:\file.txt");
Chrome: Runtime.getRuntime().exec("E:\compiledScript.exe Open E:\file.txt");