2013-07-08 110 views
0

我正在使用Selenium WebDriver和Ruby編寫自動腳本。在這種情況下,我一直點擊「取消」按鈕,下面是它的HTML代碼:無法點擊'取消'按鈕

<div class="ui-dialog-buttonset"> 
<button class="otherButtonClass" type="button" role="button" aria-disabled="false"> 
    <span class="ui-button-text">Rename</span> 
</button> 
<button class="cancelButtonClass" type="button" role="button" aria-disabled="false"> 
    <span class="ui-button-text">Cancel</span> 
</button> 
</div> 

對於點擊「取消」按鈕,我寫了以下內容:

driver.find_element(:xpath, "//button[@class='cancelButtonClass']").click 

這裏點擊行爲不會發生。我嘗試了睡眠,wait.until {element.displayed? }仍然問題沒有解決。拋出的錯誤是「元素是不可見的,因此可能無法與之交互」

但是,如果我執行單擊「重命名」按鈕動作,它的工作原理:

driver.find_element(:xpath, "//button[@class='otherButtonClass']").click 

請幫助我理解爲什麼這發生了。我很困惑,'重命名'和'取消'有類似的html代碼,仍然點擊'重命名'通行證,點擊'取消'失敗。爲什麼要這樣?

回答

0

你可以試試下面的:

script = <<-end 
element = arguments[0]; 
element.setAttribute('aria-disabled','true'); 
return element; 
end 

# select the 'Cancel' button element 
elem = driver.find_element(:css,'div.ui-dialog-buttonset>button')[1] 
# setting the 'aria-disabled' to true 
elem = driver.execute_script(script,elem) 
#after enabling the css attribute 'aria-disabled' click on the 
#cancel button 
elem.click 
0

使用CSS選擇不會的情況下,一個完美的解決方案,如果按鈕CSS是動態的,任何懸停操作。另外選擇給定元素的簡單方法是使用以下xpath。

driver.find_element(:xpath, "//span[text()='Cancel']").click 
+0

是的,我同意,只有當按鈕的CSS是動態的,我才建議解決方案。 – Karthikeyan