我正在尝试上传系统文件。为此,我使用AutoIt,以下代码是我编写的用于上传文件的脚本(AutoIt脚本):
Opt("MustDeclareVars", 1) ;0=no, 1=require pre-declare
Main()
Func Main()
Local Const $dialogTitle = $CmdLine[2]
Local Const $timeout = 5
Local $windowFound = WinWait($dialogTitle, "", $timeout)
$windowFound = WinWait($dialogTitle, "", $timeout)
Local $windowHandle
If $windowFound Then
$windowHandle = WinGetHandle("[LAST]")
WinActivate($windowHandle)
ControlSetText($windowHandle, "", "[CLASS:Edit; INSTANCE:1]", $CmdLine[1])
ControlClick($windowHandle, "", "[CLASS:Button; TEXT:&Open]")
Else
MsgBox(0, "", "Could not find window.")
Exit 1
EndIf
EndFunc
在此之后我编译了脚本,我编写的下面脚本用于执行创建的.exe
文件:
Process process = new ProcessBuilder("C:\\Users\\selenium\\auto.exe",
"C:\\Users\\selenium\\test.png", "Open").start();
我的应用程序中有一个选择文件按钮,我的测试用例正在工作,直到打开系统窗口后单击该按钮。然后我无法使用上面指定的目录打开文件。
我正在使用Selenium Web驱动程序版本 - 2.33与FireFox版本21和AutoIT版本2.28
答案 0 :(得分:2)
“打开”参数指的是窗口标题,它与浏览器不同。 Chrome - “开放” Firefox - “文件上传” IE - “选择要上传的文件”
所以,在你的情况下,而不是这一行 -
Process process = new ProcessBuilder("C:\\Users\\selenium\\auto.exe",
"C:\\Users\\selenium\\test.png", "Open").start();
您需要使用:
Process process = new ProcessBuilder("C:\\Users\\selenium\\auto.exe",
"C:\\Users\\selenium\\test.png", "File Upload").start();
答案 1 :(得分:1)
不使用AutoIt处理文件上传..只需在文件输入元素上使用IWebElement.SendKeys
,即可自动处理文件上传对话框。
所以,而不是点击文件浏览器按钮......
在页面<input type="file"/>
上找到输入元素,然后创建然后创建适当的定位器以检索元素。
然后,使用IWebElement.SendKeys()
将此元素与您要上传的文件的完整路径一起使用。