2

我正在将 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>
4

2 回答 2

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
于 2013-11-01T20:41:07.280 回答
0

@JustinKo:我都检查了。

以下是开发者的评论:

这是一个模态的“请稍候...”弹出窗口,在加载文档或执行一些耗时的活动时会出现很短的时间。该代码由 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
于 2013-11-01T19:25:20.837 回答