2011-04-14 52 views
5

我正在嘗試使用FF Selenium IDE插件測試頁面。Selenium IDE - 未觸發JQuery onclick處理程序

有類似下面的菜單結構..

<ul class="parent"> 
    <li class="child"><span><a href="something.html">link text</a></span></li> 
    <li class="child"><span><a href="somethingelse.html">other text</a></span></li> 
<ul> 

鋰元件具有綁定到這些懸停事件。這些懸停事件在實際的鏈接標籤上註冊一個點擊事件。 (我已經去掉了一些JavaScript代碼爲了簡化)

var menu = $('ul.parent'); 

    $("> li.child", menu).hover(function() { 

    $(this).find('> a').click(function() {    
     $(this).parent().addClass('active-trail'); 
     return false; 
    }); 
    }, function() {}); 

如果使用Selenium我點擊這些鏈接之一,那麼我希望處理程序被調用。它不是,點擊被簡單地執行(並且鏈接被跟隨,而不是被返回)。

我試過(閱讀其他答案後)mouseUp和mouseDown。我也嘗試使用fireEvent首先懸停在李(激活懸停事件),然後另一個fireEvent點擊錨點,但也沒有工作。

所以任何幫助將不勝感激。只是使用Selenium觸發jQuery提供的點擊處理程序的基本演示可能足以讓我看到我!

謝謝, 帕特里克。

回答

2

你是對的fireEvent(),你確定你正在使用它嗎?

如果你想發射onClick處理程序,你會做fireEvent(locator, "click")而不是fireEvent(locator, "onClick")

如果您使用selenium IDE來生成腳本,您可能會這樣做。

硒在這個領域有點隱晦,我有很多類似的問題。

+0

是啊,當然使用「懸停」和「點擊」作爲處理程序。很高興知道我正在尋找正確的領域! – 2011-04-14 20:46:55

+0

這可能與Selenium在嘗試點擊之前沒有等待懸停執行有關,請嘗試在兩個命令之間添加一個等待。 – Tnem 2011-04-14 20:50:46

+0

我試着用暫停,但沒有什麼區別。有趣的是,如果我加載頁面,將鼠標移動到元素上(有效地手動觸發懸停),然後運行單擊事件 - 然後出現菜單。 – 2011-04-18 02:54:01

1

您是否嘗試過使用XPath即

selenium.Click( 「XPath的= /後裔::李[包含(。」 東西 「)] [2]/X:一」)