onchange事件不会被解雇硒类型命令

问题描述:

我输入一些价值,在变化做一个总数。但不知何故,这个事件并没有被硒型命令所解雇。onchange事件不会被解雇硒类型命令

我也试过typeKey和typeAt ..但没有成功。任何解决方法?

您的解决方案通常是通过观察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

如果你正在使用Selenium 1.x中,还有一个fireEvent命令,你可以使用键入值后手动触发onChange事件。也许这会解决你的问题?

这为我工作在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> 

要触发onchange事件以下3个命令,尝试在Selenium IDE中添加此命令:

fireEvent targetID blur

+0

这应该是接受的答案(恕我直言)。这正是*我所需要的!另外,在我的情况下,这必须与`sendKeys`而不是`type`一起使用。非常感谢,@trex。 – OscuroAA 2015-12-10 00:32:32

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来触发它。

希望能帮助别人。

它看起来像 “的SendKeys” 命令执行,以纠正这个:

https://code.google.com/p/selenium/issues/detail?id=5451

这为我工作。

<tr> 
    <td>sendKeys</td> 
    <td>id=Quantity</td> 
    <td>Type stuff here</td> 
</tr> 

我有一个类似的问题,用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> 


不优雅,但它的工作。