我正在使用Watir WebDriver与Chrome和Firefox。
使用FF,我可以点击以下按钮:
@browser.button(:id => 'btnSubmit').when_present.click
使用Chrome,我收到以下消息:
Selenium::WebDriver::Error::UnknownError: unknown error: Element is not clickable at point (730, 681). Other element would receive the click: <div class="blockUI blockOverlay" style="z-index: 1000; border: none; margin: 0px; padding: 0px; width: 100%; height: 100%; top: 0px; left: 0px; background-color: rgb(0, 0, 0); opacity: 0.38143215011627357; cursor: default; position: fixed;"></div>
如果我在违规行上放置断点,则调试模式中的下一步工作正常。
作为一项实验,如果出现超时问题,我将代码更改为:
@browser.button(:id => 'btnSubmit').when_present(100).click
在运行模式下失败,出现相同的错误。
如果我搜索整个页面,我找不到会收到点击的“其他元素”。
<div class="blockUI.............
以下是按钮前后的div:
<div id="divSaveCancel" class="row">
<div class="six mobile-four columns">
<ul class="button-group even three-up">
<li>
<button id="cancelBtn" type="button" class="small alert button">
Cancel</button></li>
<li>
<button class="small button" id="btnSave" type="submit" name="command" value="btnSaveDraft"
onclick="beforeSubmit();">
Save Draft</button></li>
<li>
<button class="small success button" id="btnSubmit" type="submit" name="command"
onclick="beforeSubmit();" value="btnSubmit">
Save and Continue</button>
</li>
</ul>
</div>
<div class="six mobile-four columns" style="text-align: right;">
<span style="text-align: right; margin-right: 5%; vertical-align: middle; width: 100%;">
<button id="btnSendNotification2" class="small button" type="button">
Send Notification</button></span>
</div>
</div>
答案 0 :(得分:1)
而不是:
while (@browser.div(:class => 'blockUI blockOverlay').present?)
sleep(1)
end
@browser.button(:id => 'btnSubmit').click
你应该可以这样做:
@browser.div(:class => 'blockUI blockOverlay').wait_while_present
@browser.button(:id => 'btnSubmit').click
答案 1 :(得分:0)
@JustinKo:我检查了两个。
以下是开发者的评论:
这是一个模式“Please Wait ...”弹出窗口,在加载文档或执行某些耗时的活动时会出现很短的时间。该代码由JQuery插件动态注入,并在不久后删除。这可能是我们无法在文档来源中找到它的原因。
请记住以下内容不起作用:
@browser.button(:id => 'btnSubmit').when_present(100).click
但是以下工作:
sleep(1)
@browser.button(:id => 'btnSubmit').click
因此目标元素始终存在。
以下不起作用:
while !(@browser.button(:id => 'btnSubmit').visible?)
sleep(1)
end
@browser.button(:id => 'btnSubmit').click
因此目标元素始终可见。
解决方案是等待“其他元素”消失:
while (@browser.div(:class => 'blockUI blockOverlay').present?)
sleep(1)
end
@browser.button(:id => 'btnSubmit').click