我正在键入一些值,在更改时总计。但不知何故,这个事件并没有被selenium类型命令激活。
我也尝试过typeKey和typeAt ..但没有成功。对此有何解决方法?
答案 0 :(得分:8)
要触发onchange事件,请尝试在Selenium IDE中添加此命令:
fireEvent targetID blur
答案 1 :(得分:6)
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触发它。
希望能帮助某人。
答案 2 :(得分:3)
如果您正在使用Selenium 1.x,则可以使用fireEvent命令在输入值后手动触发onChange事件。也许这会解决你的问题?
答案 3 :(得分:1)
通常可以通过查看JavaScript代码找到您的解决方案..
您始终拥有的选项是输入值并从代码手动触发实际的OnChange事件。
关于此link text有一个未解决的问题 FireFox Windows无法处于活动状态时出现问题,并阻止触发OnChange。
在使用typeKeys命令之前尝试此操作:
selenium.selectWindow(null);
答案 4 :(得分:1)
这在IDE中适用于我 按顺序执行以下3个命令
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>
答案 5 :(得分:1)
它看起来像&#34; sendKeys&#34;执行命令是为了纠正这个问题:
https://code.google.com/p/selenium/issues/detail?id=5451
这对我有用。
<tr>
<td>sendKeys</td>
<td>id=Quantity</td>
<td>Type stuff here</td>
</tr>
答案 6 :(得分:0)
我遇到了类似的问题,使用Ajax制作了一个下拉列表。
当用户在字段中键入时,系统会显示带有多个选项的AJAX Composite Layers
w,每个选项都作为div
的链接
更糟糕的是,在 onChange()上调用了一个填充系统标志的函数,该标志将用作form.submit()上的验证。 (哦,痛苦)
无论如何,我的解决方案:
1 - Selenium sendKeys 命令,以便出现Ajax div
target='#'
2 - 等待带有预期选项的链接出现
<tr>
<td>sendKeys</td>
<td>id=txtTipoDocumento</td>
<td>ipsum lorem</td>
</tr>
3 - selenium clickAt 链接
<tr>
<td>waitForElementPresent</td>
<td>link=ipsum lorem</td>
<td></td>
</tr>
4 - 这是其中一个捕获:手动触发 onChange()和 blur 事件。此外,浏览器还要关注不同字段
<tr>
<td>clickAt</td>
<td>link=ipsum lorem</td>
<td>10,20</td>
</tr>
5 - 最后,为了确保,我让Selenium在forme的Submit按钮上执行ClickAt()命令,在mouseDown和MouseUp命令之间执行
<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>
不优雅,但它有效。
答案 7 :(得分:0)
我遇到了同样的问题,但能够解决此问题。下面的代码用于在输入字段中输入文本并触发onchange事件。
background: it.name === "May" ? (parseInt(text) > 50 ? "#08AE4E" : "#f54840") :"#000"
希望它能工作!