2013-10-31 52 views
0

我正嘗試使用Selenium2/WebDriver從下拉菜單中選擇一個選項。我有以下代碼:如何使用Selenium 2/Web Driver javascript API從選擇下拉菜單中選擇一個選項?

clickCss: function(selector, timeout, dontMoveAfter, finalKey) { 
    var browser = this.browser; 
    timeout = timeout || 10000; 

    var element; 

    return function(done) { 
     async.waterfall([ 
      function(cb) { 
       browser.waitForVisibleByCssSelector(selector, timeout, cb); 
      }, 
      function(cb) { 
       browser.elementByCssSelector(selector, cb); 
      }, 
      function(el, cb) { 
       element = el; 
       element.click(cb); 
      }, 
      function(cb) { 
       if (dontMoveAfter) { 
        cb(); 
       } else { 
        browser.moveTo(element, 0, -50, cb); 
       } 
      }, 
      function(cb) { 
       if (finalKey) { 
        browser.keys(wd.SPECIAL_KEYS[finalKey], cb); 
       } else { 
        cb(); 
       } 
      }, 
     ], done); 
    }; 
}, 

changeAndVerifyStatus: function(){ 
    var w = this; 
    return function(done){ 
     async.waterfall([ 
      w.clickCss(dropdownSelector,null,true), 
      w.clickCss(optionSelector,null,true), 
     ], done); 
    }; 
}, 

正如你看到的,我只是單擊下拉選擇,然後點擊選項選擇。結果是,它成功點擊下拉列表,以便顯示選項列表,然後我可以看到我想要單擊的選項被突出顯示,但似乎沒有實際點擊它,因爲JavaScript操作當下拉改變時發生的事情從未被解僱。我嘗試了多種方法,但似乎並沒有想要更改下拉菜單。有什麼想法嗎?

回答

1

嘗試跳過點擊選擇框的步驟,直接點擊選項(即使它看不到人眼)。我不太清楚爲什麼這會起作用,但這個問題已經被多次詢問過,這似乎是一個簡單的,獨立於瀏覽器的解決方案。

+0

謝謝,史蒂夫。是的,這就像一個魅力。 –

+0

很高興幫助:) –

+0

有趣的是,它實際上起作用,因爲webdriver應該模擬用戶行爲.....並且用戶將首先點擊選擇第一,然後選擇......... – Akbar

相關問題