我有处理以下情况的问题。
我正在编写测试脚本,它将使用谷歌浏览器登录系统。
我正在阅读excel的数据。
第一组数据的用户名/密码组合不正确。
场景是输入错误密码后,会出现弹出窗口,提示用户名/密码不正确。
在这种情况下,我应该可以关闭弹出窗口,watir应该从excel读取下一组数据,直到满足正确的用户名/密码组合。
问题是我不知道如何检测弹出对话框。它有以下代码:
<div id="alertMsg" style="width: auto; min-height: 76.69999980926514px; height: auto;" class="ui-dialog-content ui-widget-content"><div class="dialogBoxTitle"> </div>
<div class="alertMessage pointSearch">
<form name="saveComfortModelForm" class="pointSearchFrm">
<table cellpadding="0" cellspacing="0" width="100%" height="100%" class="pointSearchTable">
<tbody><tr>
<td>Login failed due to invalid password or username</td>
</tr>
</tbody></table>
</form>
</div></div>
还有链接点击将关闭弹出窗口。代码如下:
<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
<span class="ui-dialog-title" id="ui-dialog-title-alertMsg"> </span>
<a href="#" class="ui-dialog-titlebar-close ui-corner-all" role="button">
<span class="ui-icon ui-icon-closethick">close</span>
</a>
</div>
显示此消息时,我应该可以关闭窗口。
答案 0 :(得分:0)
您可以通过检查其元素的可见性来检测是否显示弹出对话框。这可以使用visible?
或present?
方法完成。尝试:
browser.div(:id => "alertMsg").present?
#=> Returns true if popup is displayed, false if not displayed
您可以点击关闭链接关闭弹出窗口:
browser.link(:class => "ui-dialog-titlebar-close").click
逻辑的watir部分可能是:
begin
#Execute your logic to sign in with the next user/password
#Check if the sign in was successful
sign_in_successful = not(browser.div(:id => "alertMsg").present?)
unless sign_in_successful
browser.link(:class => "ui-dialog-titlebar-close").click
end
end until sign_in_successful
更新:似乎应该使用一些do not prefer the begin-while/until和一个循环:
loop do
#Execute your logic to sign in with the next user/password
if browser.div(:id => "alertMsg").present?
browser.link(:class => "ui-dialog-titlebar-close").click
else
break
end
end
端