2011-01-14 76 views

回答

1

您的解決方案通常是通過觀察JavaScript代碼中發現..

你總是有是把在價值和手動觸發從代碼中的實際OnChange事件的選項。

有一個關於此的問題link text FireFox的Windows問題沒有激活,並且無法觸發OnChange。

使用typeKeys命令之前,試試這個:

selenium.selectWindow(null); 
+0

我正在使用IDE。這就是我所做的。 [#Executing:| getEval | selenium.selectWindow(null)|| ]不起作用。錯誤:selenium.selectWindow不是函數 – 2011-01-17 09:16:52

+0

我通常只使用Selenium RC,我不確定它甚至可以解決IDE的一些問題。您應該更新您的問題與該信息 – StefanE 2011-01-17 09:43:23

3

如果你正在使用Selenium 1.x中,還有一個fireEvent命令,你可以使用鍵入值後手動觸發onChange事件。也許這會解決你的問題?

1

這爲我工作在IDE 做的,以

Typekeys targetID input 
FireEvent targetID focus 
Type  targetID input 

源看起來是這樣的(輸入是字母r

<tr> 
<td>typeKeys</td> 
<td>//form/input</td> 
<td>r</td> 
</tr> 
<tr> 
<td>fireEvent</td> 
<td>//form/input</td> 
<td>focus</td> 
<tr> 
<td>fireEvent</td> 
<td>//form/input</td> 
<td>focus</td> 
</tr> 
<tr> 
<td>type</td> 
<td>//form/input</td> 
<td>r</td> 
</tr> 
</tr> 
<tr> 
<td>type</td> 
<td>//form/input</td> 
<td>r</td> 
</tr> 
8

要觸發onchange事件以下3個命令,嘗試在Selenium IDE中添加此命令:

fireEvent targetID blur

+0

這應該是接受的答案(恕我直言)。這正是*我所需要的!另外,在我的情況下,這必須與`sendKeys`而不是`type`一起使用。非常感謝,@trex。 – OscuroAA 2015-12-10 00:32:32

5

Firefox有一個bug,它可以防止在瀏覽器窗口焦點不清的情況下執行某些事件。當你運行自動化測試時,這可能是一個問題 - 即使窗口沒有對焦,也可能會打字。

要解決這個問題我更改事件「手動」觸發時,注入的JavaScript到我的測試:

//suppose "element" is an input field 
element.sendKeys("value"); 
JavascriptExecutor jsExecutor = (JavascriptExecutor) driver; 
jsExecutor.executeScript("$(arguments[0]).change();", element); 

正如你可能已經注意到,我使用jQuery來觸發更改事件。如果你沒有在你的應用上使用jQuery,你可以檢查here如何使用vanilla javascript來觸發它。

希望能幫助別人。

0

我有一個類似的問題,用Ajax製作下拉列表。
作爲一個字段的用戶類型,系統將顯示AJAXdiv瓦特有幾種選擇,每一個與target='#'

而且更要命的鏈接,有一個叫上的onChange()那漫天功能系統標誌,以及標誌將被用作驗證在form.submit() (哦,痛苦)

不管怎麼說,我對這個解決方案:
1 - 硒的SendKeys命令,以便阿賈克斯DIV會出現

<tr> 
    <td>sendKeys</td> 
    <td>id=txtTipoDocumento</td> 
    <td>ipsum lorem</td> 
</tr> 

2 - 等待與期望選項的鏈接出現

<tr> 
    <td>waitForElementPresent</td> 
    <td>link=ipsum lorem</td> 
    <td></td> 
</tr> 

3 - 硒clickAt鏈接

<tr> 
    <td>clickAt</td> 
    <td>link=ipsum lorem</td> 
    <td>10,20</td> 
</tr> 


4 - 這裏是其一捕獲:手動啓動onChange()模糊事件。此外,拉福斯瀏覽器將焦點設置不同

<tr> 
     <td>fireEvent</td> 
     <td>id=txtTipoDocumento</td> 
     <td>blur</td> 
    </tr> 
    <tr> 
     <td>fireEvent</td> 
     <td>id=selSerie</td> 
     <td>change()</td> 
    </tr> 
    <tr> 
     <td>fireEvent</td> 
     <td>id=selSerie</td> 
     <td>blur</td> 
    </tr> 
    <tr> 
     <td>focus</td> 
     <td>id=imgDataElaboracao</td> 
     <td></td> 
    </tr> 

5 - 最後,可以肯定,我做了硒都對印版的提交按鈕執行ClickAt()命令,之間一個鼠標按下和MouseUp命令

<tr> 
    <td>mouseDown</td> 
    <td>id=btnSalvar</td> 
    <td></td> 
</tr> 
<tr> 
    <td>focus</td> 
    <td>id=btnSalvar</td> 
    <td></td> 
</tr> 
<tr> 
    <td>clickAt</td> 
    <td>id=btnSalvar</td> 
    <td>10,20</td> 
</tr> 


不優雅,但它的工作。