Как вызвать значение из свойств в сценарии AutoIT?

У меня есть скрипт в AutoIT (для обработки окна загрузки файла в селене)

    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'

person TodayILearned    schedule 17.03.2016    source источник
comment
почему вы хотите обрабатывать загрузку файлов, используя AutoIT вместо Selenium?!   -  person Andersson    schedule 17.03.2016
comment
@Andersson Поскольку селен не может обрабатывать всплывающие окна, необходимо использовать AutoIT для обработки всплывающих окон загрузки файлов.   -  person TodayILearned    schedule 29.03.2016
comment
selenium разрешить загрузку файла без обработки всплывающих окон   -  person Andersson    schedule 29.03.2016
comment
@Andersson Если это всплывающее окно в Интернете. Selenium невозможен, когда речь идет о всплывающих окнах (ОС).   -  person TodayILearned    schedule 29.03.2016
comment
нет, я имею в виду избегать обработки OS встроенных всплывающих окон   -  person Andersson    schedule 29.03.2016
comment
Вам просто нужно отправить путь к файлу прямо в элемент ввода   -  person Andersson    schedule 29.03.2016
comment
укажите html для кнопки, предназначенной для открытия всплывающего окна загрузки файла, и языка программирования, который вы используете   -  person Andersson    schedule 29.03.2016


Ответы (2)


Что я сделал, так это сценарий 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);

где путь — это путь к файлу, который вы хотите загрузить. Я предполагаю, что вы уже знаете, когда вызывать свой скрипт AutoIt: D
РЕДАКТИРОВАТЬ1: $CmdLine[0] зарезервировано для подсчета количества аргументов командной строки, переданных в скрипт autoit... поэтому фактические аргументы начинаются с $CmdLine[ 1], который является первым аргументом, передаваемым в командной строке.
EDIT2: я предполагаю, что вы работаете из основного метода, если это так, то ваш вызов для выполнения сценария autoIt должен быть таким: Runtime.getRuntime().exec(TestUtility.properties.getProperty("test.all.autoit.testdata")+" "+args[0]); где args[0] — это массив аргументов, переданный в качестве аргумента основному методу, чей 0-й индекс имеет лист Excel, который вы хотите передать. Также вам нужно передать абсолютный путь к таблице Excel.

person Mrunal Gosar    schedule 17.03.2016
comment
Не могли бы вы уточнить подробнее. - person TodayILearned; 29.03.2016
comment
mrunal, спасибо за код. Сценарий AutoIT: WinWaitActive (загрузка файла) Send ($ CmdLine [0]) Send ({ENTER}) мой способ вызова .exe из сценария selenium — Runtime.getruntime().exec (путь к файлу свойств); Из строки cmd я запускаю сценарий: d:›java -jar myjar.jar mypropertyfile.properties путь к загружаемому файлу. Сценарий выполняется. Но он отображает сообщение об ошибке --- Line2 (имя файла-к-exe); ошибка: переменная массива имеет неправильное количество индексов или превышен диапазон размеров индексов. Пожалуйста, помогите мне в устранении ошибки. - person TodayILearned; 30.03.2016
comment
$CmdLine[0] зарезервирован для подсчета количества аргументов командной строки, переданных сценарию autoit.. поэтому фактические аргументы начинаются с $CmdLine[1], который является первым аргументом, переданным в командной строке. - person Mrunal Gosar; 30.03.2016
comment
Кроме того, строка --- Runtime.getRuntime().exec(src/test/resources/fileupload.exe +path); это невозможно, так как я не хочу жестко кодировать путь к загружаемому файлу где-либо в сценарии селена и автоит. Пользователь должен ввести путь к загружаемому файлу в качестве аргумента в строке cmd. - person TodayILearned; 30.03.2016
comment
Простой. Затем используйте этот аргумент, например Runtime.getRuntime().exec(args[0]+ +args[1]), где args[0] — это путь к сценарию autoit, переданный в командной строке, а args[1] — указанный путь загрузки файла. в командной строке. - person Mrunal Gosar; 30.03.2016
comment
Я пробовал использовать $CmdLine[1] (даже 2,3,4) в сценарии autoit, но все равно сталкивался с той же ошибкой, что и Line2 (имя_файла-к-exe); ошибка: переменная массива имеет неправильное количество индексов или превышен диапазон размеров индексов. - person TodayILearned; 30.03.2016
comment
Можете ли вы опубликовать полный код с классом java и кодом скрипта autoit на исходный вопрос. Позвольте мне взглянуть - person Mrunal Gosar; 30.03.2016
comment
Ошибка, которую я получаю: Строка 2 (FileC:\\XX\\XX\\XX\\someFolder\\ListUploadScript.exe); Ошибка: переменная массива имеет неправильное количество индексов или превышен диапазон размеров индексов. - person TodayILearned; 30.03.2016
comment
Нет, я не запускаю основной метод. Я запускаю runtime.getruntime()... из класса Testutility.java. Когда я добавляю Runtime.getRuntime().exec(TestUtility.properties.getProperty(test.all.autoit.testdata)+ +args[0]); Он показывает, что ошибка в args[0] не может быть преобразована в переменную. - person TodayILearned; 30.03.2016
comment
Таким образом, откуда бы вы ни вызывали этот оператор, вероятно, из другого метода, вам нужно передать некоторый параметр/аргумент этому методу, указывающему абсолютный лист excel, и этот аргумент, который вы можете использовать вместо args [0].. Бадди, это некоторая базовая java - person Mrunal Gosar; 30.03.2016
comment
Я это проверю. - person TodayILearned; 31.03.2016
comment
Что касается исходного вопроса, я считаю, что на него дан ответ ... не могли бы вы принять это как ответ, чтобы помочь другим, ищущим такие запросы, легко найти ответ - person Mrunal Gosar; 31.03.2016
comment
Готово. Спасибо за вашу помощь. - person TodayILearned; 04.04.2016

Вы можете использовать ini-файлы с функциями IniRead и IniWrite.

Файл выглядит так:

[Название раздела]

KeyName1=Значение

KeyName2=Значение

И вы читаете в файле с:

IniRead('nom_fichier.ini', 'SectionName', 'KeyName1', 'Default Value')
person Gremi64    schedule 17.03.2016