2014-08-29 48 views
0

我想用selenium webdriver上傳一張照片。
我用以下環境:
Selenium 2.42.2無法像AutoIt那樣調用.exe文件

[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它工作正常。

但是對於那些罐子,我的應用程序的一個密碼字段定位器不起作用。 當輸入密碼時,它以純文本顯示,甚至點擊提交按鈕,它不接​​受該密碼。

這裏是password場的HTML

<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> 

這裏是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) – 2014-08-29 07:22:03

+0

我已經嘗試過它不工作 – 2014-08-29 08:21:54

回答

0

不知道這會幫助你AutoIt的代碼,但我認爲你沒有必要使用的AutoIt與對話進行交互。我不知道Java,但在C#中有很多庫可以獲取任何窗口,並且可以與應用程序中的任何元素交互(例如UIAutomation)。你可以使用winapi來瀏覽文件對話框並在其中找到文本框。或者你可以使用.net庫用於相同的目的,我認爲有很多文章如何在java(.net interop)中使用.net庫。

+0

我搜查,但couldnot找到任何有用 – 2014-08-31 18:15:34

0

打開對話框不是頂級窗口,它是一個子窗口。 爲了AutoIt的檢測子窗口,你需要設置:

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

允許窗口搜索程序來搜索子窗口以及頂層窗口。 0 =僅搜索頂層窗口(默認) 1 =搜索頂層和子窗口

而且它的聰明,#RequireAdmin添加到您的AutoIt腳本的頂部。這可以解決權限提升問題。

關於密碼字段, 在你的html中,你有一些onclick的代碼將執行某些密碼處理,例如。更改輸入類型(這就是爲什麼您會看到純文本的原因。) 在設置值之前或/和之後在輸入字段上調用點擊和焦點事件。

+0

我'code'選項(「WinSearchChildren」試過了, 1); '代碼',但它不能在硒2.42.2上工作。沒有使用該代碼,我的autoit代碼也可以正常使用硒2.39等 – 2014-08-31 18:08:30

+0

有關該密碼字段,其行爲是當沒有密碼控制的焦點時,「密碼」仍然顯示給用戶,但當他點擊,它消失,以加密形式提供用戶的輸入.......但是,當我試圖找到該元素,它與硒2.42工作正常。2但是在較低的版本中,任何一個輸入都不會在文本框中發送,或者以純文本的形式顯示。我用css locator:「#textBoxPassword」或「textBoxPasswordRegular」。 – 2014-08-31 18:14:15

+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文件時遇到問題。 – 2014-09-01 03:02:46

相關問題