Selenium RC点击命令卡住了

时间:2011-04-11 09:50:15

标签: selenium selenium-rc

解决方案: 今天(2011-04-13)严重处理Selenium RC Firefox 4下的确认框。 我不得不改回Firefox 3.16然后这个问题就消失了。再次感谢。

原始问题:

Hello Selenium gurus,

我正在尝试使用Selenium 2.0b3作为Java客户端和独立服务器从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

谢谢:Andras

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中,它等待selenium 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 
...

3 个答案:

答案 0 :(得分:1)

您是否尝试过更换

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

selenium.click("id=command_Delete");

在我看来,由于该事件被绑定到应该有效的div本身。

此外,您可以直接执行click操作,我正在使用jQuery,因为您似乎已经将它加载到页面上并且它使事情变得更容易(特别是对于跨浏览器测试):

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

您只需要评估此解决方案是否适合您。

答案 1 :(得分:1)

如果弹出确认框,测试将会阻止,直到该确认框被删除。您可以进行快速手动测试,看看这是否是您的问题。

运行你的测试,当确认框出现时,manuall y与它互动,如果其他一切都很好,测试应该按照正常情况从那一点继续。

Selenium正在等待加载页面,但弹出框阻止页面加载,最终导致超时。

您可以尝试使用selenium.chooseOkOnNextConfirmation();点击之前。

答案 2 :(得分:0)

您确定您的小部件可以支付点击费用吗?

我会尝试CSS标识符:

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