2011-04-11 68 views
3

解決方案: 今天(2011-04-13)嚴重處理Selenium RC Firefox 4下的確認框。 我不得不改回Firefox 3.16,然後這個問題就消失了。再次感謝。Selenium RC單擊命令卡住

原題:

你好硒大師,

我試圖執行從Java使用Selenium 2.0b3作爲Java客戶端和獨立的服務器太自動化瀏覽器測試。
服務器使用特定配置文件啓動Firefox 4。

測試停留在「單擊」命令;它等待並且沒有超時/異常/任何錯誤發生。在這個點擊過程中出現一個確認框,所以我猜這就是問題所在,但我不知道爲什麼會卡住。在Selenium IDE中不包含這個確認框,僅在RC中。

問題不在於,點擊不會發生(因爲出現確認框),而是確認框掛起。 我嘗試了這些,但並沒有幫助:

selenium.click("css=div[id=command_Delete]"); 
selenium.click("id=command_Delete"); 
String JSscript = "jQuery('#command_Delete').click();" // See http://api.jquery.com/click/ 
selenium.runScript(JSscript); 

這些只是方式如何啓動點擊。 也許我根據這些鏈接來啓動不同的主題:http://www.sqaforums.com/showflat.php?Cat=0&Number=567974&an=&page=0&vc=1

感謝:安德拉斯

Java代碼:

selenium.click("//div[@id='command_Delete']/span"); 
//stucks here 
//so this is not reached: 
String confirmation = selenium.getConfirmation(); 

HTML:

<div id="command_Delete" class="..."> 
    <div>...</div> 
    <span>Delete</span> 
    <div>...</div> 
    <br><br> 
</div> 

的Javascript:

<script type="text/javascript"> 
    $('command_Delete').addEvent('click',function(){ 
     var isConfirmTrue = confirm('Do you want to delete?'); 
     if (isConfirmTrue) { 
      var myForm = getFormObj(document, "deleteForm"); 
      submitForm(myForm); 
     } 
    }); 
</script> 

並在Java,它掛等待硒RC回答:

HttpURLConnection.getInputStream() line: 912 [local variables unavailable] 
HttpURLConnection(HttpURLConnection).getResponseCode() line: 367 [local variables unavailable] 
HttpCommandProcessor.getResponseCode(HttpURLConnection) line: 147 
HttpCommandProcessor.getCommandResponseAsString(String) line: 167 
HttpCommandProcessor.executeCommandOnServlet(String) line: 107 
HttpCommandProcessor.doCommand(String, String[]) line: 89 
DefaultSelenium.click(String) line: 167 
... 

回答

0

你有沒有試着用

selenium.click("id=command_Delete"); 

更換

selenium.click("//div[@id='command_Delete']/span"); 

在我看來,由於事件綁定到div本身應該工作。

此外,您可以直接通過這樣做,我使用jQuery因爲你似乎已經擁有它加載的頁面上,這讓事情變得更容易(特別是跨瀏覽器測試)執行click行動

String JSscript = "jQuery('#command_Delete').click();" // See http://api.jquery.com/click/ 
selenium.runScript(JSscript); 

你只需要評估這個解決方案是否適合你。

+0

讓我知道這是否適合你。 – Argote 2011-04-11 10:04:47

+0

嗨,不幸的是它沒有工作。我認爲這兩個命令都完全一樣,最後在javascript中調用delete命令。 – Andras 2011-04-11 11:13:49

+0

@Andras檢查我的編輯。 – Argote 2011-04-11 16:34:48

0

你確定你的部件可以買得起嗎?

我想嘗試的CSS標識符:

selenium.click("css=div[id=command_Delete]"); 
+0

解決方案位於此頁面的頂部。 – Andras 2011-04-13 08:30:03

+1

@Andras - 您應該將其作爲回答發佈,並選中複選框 – MacGyver 2011-08-07 08:07:34

1

如果一個確認框彈出測試將阻塞,直到確認框已被刪除。你可以做一個快速的手動測試,看看這是否是你的問題。

運行您的測試,當確認框出現時,手動與它進行交互,如果一切正常,則測試應該從該點繼續。

Selenium正在等待頁面加載,但彈出框阻止頁面加載,最終導致超時。

你可以嘗試使用selenium.chooseOkOnNextConfirmation()來解決這個問題。在你點擊之前。

+0

感謝您的回答,這非常有用,但解決方案是FF4/FF3更改。 – Andras 2011-04-13 08:28:21