2011-07-05 25 views
0

我需要一種方法來嘗試單擊元素,但如果它不存在,則測試不應失敗。 一種「點燃而忘記」的點擊。「嘗試」單擊某個元素的方法,如果不存在(火和遺忘)

我想直接在Selenese(或js,至於user-extensions.js),而不是在PHPUnit/JUnit中。

我想也許是一個「用戶擴展」功能來做到這一點,所以我搜索了openqa Site,但我沒有找到任何有用的東西。

更新:我自己的第一次嘗試:(不工作)

Selenium.prototype.doClickAndForget= function(locator) { 
    this.page().click(locator)); 
    return true; 
}; 

如何使它工作的任何想法?

+1

我建議不要這種測試。最好是每次測試總是做同樣的事情,否則會使調試更加困難。如果由於AJAX等原因而出現元素不存在的問題,最好再提出一個單獨的問題。 – artbristol

回答

0

我用「storeEval()」和純js做了它。 要麼我得到了一個有效的鏈接,要麼我返回了一個強制性元素來「僞造」,所以sel不會拋出任何錯誤。 它是一個黑客,但我有我的網站「內定義」的內容,所以我需要一種方式來處理的可能性。

0

可能是你可以在DefaultSelenium創建一個包裝爲click(String)方法類似

public void clickWithoutFail(String locator){ 
    try{ 
     selenium.click(locator); 
    }catch(SeleniumException ex){ 

    } 
} 

以上包裝方法可以解決你的問題。它會忽略在點擊不存在的元素期間發生的任何錯誤。

通過使用isVisible()方法檢查定位器的存在,可以避免使用try/catch塊。

希望這會有所幫助。

+0

你的代碼不是js(我需要_user-extension.js_),但我會盡力在js中做到這一點。 – Loxik