2013-11-01 46 views
2

我在Chrome和Firefox上使用Watir WebDriver。我可以點擊Firefox中的按鈕 - 爲什麼不在Chrome中?

隨着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> 
+1

當你正在尋找覆蓋div,你檢查了實際的DOM(例如使用瀏覽器的開發者工具欄)還是查看頁面源? –

回答

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 
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 
相關問題