Selenium不启用按钮

时间:2012-02-28 17:50:38

标签: testing selenium selenium-ide gui-testing ui-testing

我只需要对我的应用程序的UI测试进行一些操作,并偶然遇到问题。

登录屏幕有用户ID和密码字段,登录按钮是通过javascript if和onlf启用的,如果两个字段中都有一些内容。

当我录制套件时,按钮会启用,selenium会记录操作。

但是当运行完整套件时,登录按钮永远不会启用,等待30000ms后测试失败。

我是否必须手动启用此按钮或编写测试用例才能启用?这种情况的理想解决方案是什么。

此致

萨蒂亚

2 个答案:

答案 0 :(得分:0)

几个月前,我在WatiN中遇到了类似的行为,其中所有Javascript事件都不一定通过测试方法调用。我想通过两种方式绕过它。一种是显式调用Javascript事件,类似于MyTextField.FireEvent(“onchange”)。另一种方法是直接调用“启用”javascript“方法,类似于MyPage.Eval(”myjavascriptEnableFunction“)。

这两种解决方案都不理想,因为它不能模仿用户行为,但它是我能找到的最好的解决方案。

答案 1 :(得分:0)

如果没有更多信息,很难确定问题的确切解决方案。但是,我认为Selenium确实支持您的需求。我过去经历过这个问题。

首先,当文本输入文本框时,会触发很多事件。焦点,变化,KeyDown,KeyPress,KeyUp。 Selenium的'Type'命令不会触发这些事件,只是将文本放在字段中。

为了正确模拟用户的操作,您需要找出哪些事件对相关文本框很重要,并添加至少一行来触发该事件。如果您使用的是Selenium IDE,则只需在Type步骤(FireEvent“keyPress”或KeyPress)之后触发KeyPress事件即可。我使用RC进行测试,所以我编写了一个方法来模拟输入的每个字符的击键。您可以通过编写触发事件的自定义Type命令来执行相同的操作。

示例:

<table>
<tr>
<td>Type</td><td>boxLocator</td><td>Text Input</td></tr>
<tr>
<td>KeyPress</td><td>boxLocator</td><td>t</td></tr></table>

我认为应该做你想做的事情并启用按钮。

最后,关于必须在用户操作之外做某事的评论并不完全正确。当用户操作时,浏览器会发生许多不同的操作。如果有的话,Selenium会选择不做所有这些行动,所以我们就会懈怠。