【问题标题】:How to call value from properties in AutoIT script?如何从 AutoIT 脚本中的属性调用值?
【发布时间】:2016-03-17 04:31:28
【问题描述】:

我在 AutoIT 中有脚本(在 selenium 中处理上传文件窗口)

    WinWaitActive("File Upload")
    Send("C:\Users\XXX\Desktop\Folder1\MyFile.xlsx")
    Send("{ENTER}")

我想从属性文件中提取路径名,而不是硬编码路径名。(这样明天我们就不用碰 AutoIT 脚本来修改路径名了)。

有什么办法吗?

更新 1: java代码:

Runtime.getRuntime().exec(TestUtility.properties.getProperty("test.all.autoit.testdata"));
Thread.sleep(8000);

AutoIT代码:

WinWaitActive("File Upload")
Send($CmdLine[1])
Send("{ENTER}")

Cmd线:

c:>java -jar pathToJar.jar pathToProperties.properties pathToFileUpload.xlsx

Properties文件:

test.all.autoit.testdata='C:\\XX\\XX\\XX\\someFolder\\ListUploadScript.exe'

【问题讨论】:

  • 为什么要使用AutoIT而不是Selenium来处理文件上传?!
  • @Andersson 由于 selenium 不能处理弹窗,需要使用 AutoIT 来处理文件上传弹窗。
  • selenium 允许上传文件而不处理弹出窗口
  • @Andersson 如果是基于网络的弹出窗口。对于基于窗口 (OS) 的弹出窗口,Selenium 是不可行的。
  • 不,我的意思是避免处理OS原生弹出窗口

标签: selenium autoit


【解决方案1】:

我所做的是 AutoIt 脚本可以接受用于调用的命令行参数,因此我的 Java 测试使用从属性文件中读取该属性,然后当我调用 AutoIt 脚本时,我使用该属性作为 AutoIt 的命令行选项来调用它脚本并接受 AutoIt 脚本中的命令行参数作为要上传的文件的路径。让我知道这是否适合你!!!
此外,如果您的上传按钮是输入类型,则无需使用 AutoIt..直接element.sendKeys(<Path to upload file>) 应该可以工作
示例代码:

WinActivate("File Upload")
WinWaitActive("File Upload")
Send($CmdLine[1])
Send("{Enter}")

这里$CmdLine[1] 接受传递的第一个命令行参数。所以在调用这个脚本(.exe)的时候,以这种方式调用它。

Runtime.getRuntime().exec("src/test/resources/fileupload.exe "+path);

其中 path 是您要上传的文件的路径。 我假设您已经知道何时调用 AutoIt 脚本 :D
EDIT1:$CmdLine[0] 保留用于获取传递给 autoit 脚本的命令行参数的数量。所以实际参数以 $CmdLine[1] 开头,这是命令行上传递的第一个参数。
EDIT2:我假设您正在从 main 方法运行,如果是这样,那么您执行 autoIt 脚本的调用应该是这样的:Runtime.getRuntime().exec(TestUtility.properties.getProperty("test.all.autoit.testdata")+" "+args[0]); 其中 args[0] 是作为参数传递给 main 方法的 args 数组,其第 0 个索引具有您希望传递的 excel 表。你还需要传递excel电子表格的绝对路径。

【讨论】:

  • 能否详细说明一下。
  • Mrunal,感谢您的代码。 AutoIT 脚本: WinWaitActive("File Upload") Send($CmdLine[0]) Send("{ENTER}") 我从 selenium 脚本调用 .exe 的方式是 Runtime.getruntime().exec("path-to-property -文件”);从 cmd 行,我通过以下方式触发脚本:d:>java -jar myjar.jar mypropertyfile.properties path-to-file-to-be-uploaded。脚本已执行。但它显示错误消息---Line2(File"pathname-to-exe");错误:数组变量的下标数量不正确或超出了下标尺寸范围。请指导我解决错误。
  • $CmdLine[0] 保留用于获取传递给 autoit 脚本的命令行参数的数量。所以实际参数以 $CmdLine[1] 开头,这是命令行上传递的第一个参数.
  • 还有,一行--- Runtime.getRuntime().exec("src/test/resources/fileupload.exe "+path);不可行,因为我不想在 selenium 和 autoit 脚本的任何地方硬编码要上传的文件路径。用户应在 cmd 行中输入要上传的文件的路径作为参数。
  • Simple 然后使用 Runtime.getRuntime().exec(args[0]+" "+args[1]) 之类的参数,其中 args[0] 是在命令行中传递的 autoit 脚本路径, args[1] 是命令行指定的文件上传路径。
【解决方案2】:

您可以使用带有IniReadIniWrite 函数的ini 文件

文件看起来像:

[部分名称]

KeyName1=值

KeyName2=值

你在文件中读到:

IniRead('nom_fichier.ini', 'SectionName', 'KeyName1', 'Default Value')

【讨论】:

    猜你喜欢
    • 2021-08-25
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多