2011-04-11 55 views
3

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

原题:

你好硒大师,

我试图执行从Java使用Selenium 2.0b3作为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

感谢:安德拉斯

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,它挂等待硒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 
... 

回答

0

你有没有试着用

selenium.click("id=command_Delete"); 

更换

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

在我看来,由于事件绑定到div本身应该工作。

此外,您可以直接通过这样做,我使用jQuery因为你似乎已经拥有它加载的页面上,这让事情变得更容易(特别是跨浏览器测试)执行click行动

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

你只需要评估这个解决方案是否适合你。

+0

让我知道这是否适合你。 – Argote 2011-04-11 10:04:47

+0

嗨,不幸的是它没有工作。我认为这两个命令都完全一样,最后在javascript中调用delete命令。 – Andras 2011-04-11 11:13:49

+0

@Andras检查我的编辑。 – Argote 2011-04-11 16:34:48

0

你确定你的部件可以买得起吗?

我想尝试的CSS标识符:

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

解决方案位于此页面的顶部。 – Andras 2011-04-13 08:30:03

+1

@Andras - 您应该将其作为回答发布,并选中复选框 – MacGyver 2011-08-07 08:07:34

1

如果一个确认框弹出测试将阻塞,直到确认框已被删除。你可以做一个快速的手动测试,看看这是否是你的问题。

运行您的测试,当确认框出现时,手动与它进行交互,如果一切正常,则测试应该从该点继续。

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

你可以尝试使用selenium.chooseOkOnNextConfirmation()来解决这个问题。在你点击之前。

+0

感谢您的回答,这非常有用,但解决方案是FF4/FF3更改。 – Andras 2011-04-13 08:28:21