【发布时间】:2014-02-18 11:34:16
【问题描述】:
在使用 selenium webdriver 自动化 Web 应用程序时,我遇到了需要上传文件并继续进行的情况。
我们为此使用 Java 和 Tcl 脚本语言。
下面是我的 TCL 代码:
set methodname "uploadFile"
set action "Open"
set file "C:\\\\BATFiles\\\\InsertUsersAccessGroup.txt"
[$_webdriverObj executeScript $methodname $action $file] --> This calls the java method 'executeScript'
这里的 'executeScript' 是我的 Java 方法,代码如下:
public void executeScript(String methodName, String action,String file) {
log.info("Before try block");
try {
log.info("Inside try block");
Runtime r = Runtime.getRuntime();
log.info("Created a runtime object");
Process p = r.exec(new String[]{"C:\\AutoIt\\ModenaAutoIt.exe", methodName, action, file });
log.info("Afte the exec");
p.waitFor();
} catch(Exception IOException) {
log.info("inside exception");
log.info(IOException);
}
}
即使文件“ModenaAutoIt.exe”存在于“AutoIt”文件夹下的“C”目录中,我的脚本仍因 Java 异常而失败
java.io.IOException: 无法运行程序 "C:\AutoIt\ModenaAutoIt.exe": java.io.IOException: error=2, No such file or directory"
有人可以帮我吗?
【问题讨论】:
-
可能是权限问题?你有没有尝试在那个盒子上直接运行你的代码(简单的 main 没有 web-stuff)?
-
测试如下: public static void main(String args[]){ WebHelper wh = new WebHelper(); wh.executeScript("uploadFile", "Open", "C:\\\\BATFiles\\\\InsertUsersAccessGroup.txt"); }
-
它给出了这样的输出,即使它实际上没有执行上传功能: (17:16:18,010) WebHelper : INFO - Before try block (17:16:18,013) WebHelper :INFO - 内部尝试块(17:16:18,013)WebHelper:INFO - 创建了一个运行时对象(17:16:18,105)WebHelper:INFO - 执行后
-
你怎么知道它是否运行?您没有捕获进程的 system.out/system.err 输出。此外,在 waitFor() 调用之前,您有“执行之后”日志,这有点不现实。