解决方案:今天(2011-04-13)对Firefox4下的Selenium RC确认框处理得很糟糕。我不得不换回Firefox 3.16,然后这个问题就消失了。再次感谢。
原问题:
你好,硒大师,
我正在尝试使用Selenium 2.0b3作为Java客户机和独立服务器,从Java执行自动化的浏览器测试。
服务器使用特定的配置文件启动Firefox4。
测试停留在"click“命令上;它等待,并且没有超时/异常/任何错误发生。在点击的过程中会出现一个确认框,所以我想这就是问题所在,但我不知道为什么它会卡住。在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
...发布于 2011-04-11 17:56:59
你有没有试过更换
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);你只需要评估这个解决方案是否对你有好处。
发布于 2011-04-12 21:57:03
如果弹出确认框,则测试将被阻止,直到该确认框被移除。你可以做一个快速的手动测试,看看这是不是你的问题。
运行您的测试,当确认框出现时,手动与其交互,如果其他一切正常,测试应该从该点按正常方式继续。
Selenium正在等待页面加载,但弹出框阻止页面加载,最终导致超时。
您可以尝试在单击之前使用selenium.chooseOkOnNextConfirmation();解决此问题。
发布于 2011-04-11 21:05:49
你确定你的小工具可以点击一下吗?
我会尝试使用CSS标识符:
selenium.click("css=div[id=command_Delete]");https://stackoverflow.com/questions/5619537
复制相似问题