2014-08-29 3 views
0

Я хочу загрузить фотографию с помощью selenium webdriver.
я использовал следующие среды:
Selenium 2.42.2 не работает для вызова .exe, как для AutoIt

[Selenium 2.42.2][1] 
TestNg, 
Firefox 26to 30, 
[AutoIt][2] 

Вот Test.java код

driver.findElement(By.id("photo")).click(); 

    Runtime.getRuntime().exec("Z://browseExample.exe"); 

Но селен не запускает линию для автоматического выполнения. Если я вручную нажимаю на browseExample.exe, тогда он записывает нужный путь в текстовое поле browse и нажимает на открытое.

Я заметил, что с селеновым банком, как 2.39, 2,38, он отлично работает.

Но с этими банками одно приложение с паролем моего приложения не работает. Когда введен пароль, он отображается обычным текстом и даже нажимает кнопку отправки, он не принимает этот пароль.

Вот HTML из password полей

<div class="formbox"> 
<input type="password" value="Password" onclick="this.value == 'Password' ? this.value = '' : this.value;" onfocus="this.select()" onblur="javascript:return ShowDefaultText();" maxlength="255" title="Please enter password" name="textBoxPassword" tabindex="2" id="textBoxPassword" style="display: none;"> 
<input value="Password" onclick="this.value == 'Password' ? this.value = '' : this.value;" onfocus="javascript:return HideDefaultText();" maxlength="255" title="Please enter password" tabindex="2" name="textBoxPasswordRegular" class="logintext" id="textBoxPasswordRegular" style="display: block;"> 
</div> 

Вот AutoIT код browseExample.exe

; Wait 10 seconds for the Upload window to appear 

    WinWait("[CLASS:#32770]","",10) 

; Set input focus to the edit control of Upload window using the handle returned by WinWait 

    ControlFocus("File Upload","","Edit1") 

    Sleep(2000) 

; Set the File name text on the Edit field 

    ControlSetText("File Upload", "", "Edit1", "Z:\snipett.txt") 

    Sleep(2000) 

; Click on the Open button 

    ControlClick("File Upload", "","Button1"); 
+0

Попробуйте изменить // к \\ (Z: \\ browseExample.exe) –

+0

Я уже пробовал не работает –

ответ

0

Не уверен, что это поможет, но я думаю, что вы не обязательно использовать AutoIt для взаимодействия с диалогом. Я не знаю java, но на C# существует множество библиотек для получения любого окна и возможность взаимодействия с любым элементом в приложении (например, UIAutomation). Вы можете использовать winapi для поиска. Найдите диалог с файлом и найдите в нем текстовое поле. Или вы можете использовать библиотеку .net для тех же целей, я думаю, что есть много статей о том, как использовать библиотеку .net в java (java .net interop).

+0

я искал, но couldnot найти что-нибудь полезное –

0

Открытый диалог не является окном верхнего уровня, его дочерним окном. Для того, чтобы AutoIt для обнаружения дочерних окон необходимо установить:

Opt("WinSearchChildren", 1) ;0=no, 1=search children also 

Позволяет поисковое окно процедуры для поиска дочерних окон, а также окон верхнего уровня. 0 = Только поиск окон верхнего уровня (по умолчанию) 1 = Поиск верхнего уровня и дочерние окна

Кроме того, его умные, чтобы добавить #RequireAdmin в верхней части AutoIt скрипт. Это может решить проблемы с разрешением.

О поле пароля, В вашем html у вас есть код onclick, который будет выполнять определенную обработку пароля, например, например. изменение типа ввода (вот почему вы видите обычный текст.) Вызывать события щелчка и фокуса в поле ввода до или после установки значения.

+0

Я попытался с 'code' Opt («WinSearchChildren», 1); 'code', но он не может работать на селен 2.42.2. Без использования этого кода мой код autoit также отлично работает с селеном 2.39 и т. Д. –

+0

относительно этого поля пароля, его поведение - это когда нет фокуса на управлении паролями, «Пароль» остается отображаемым для пользователя, но по мере того, как он нажимает, он исчезает и в зашифрованном виде вводится пользовательский вход ....... Но когда я попытался найти этот элемент, он отлично работал с селеном 2.42.2, но в более низких версиях, либо ввод не отправляется в текстовое поле, либо отображается как обычный текст. Я использовал css-локатор: «#textBoxPassword» или «textBoxPasswordRegular». –

+0

Я использовал код для входа в систему как getPassWord(). Click(); getPassWord2(). Sendkeys ("yourPassword"); где public static final String password = "#textBoxPasswordRegular"; \t public static final String password2 = "#textBoxPassword"; поэтому он работал для функций входа в систему для селена 2.39, и мой код загрузки файлов также работал на это. Однако у селена 2.42.2 есть проблема с вызовом exe. –

Смежные вопросы