2011-08-14 21 views
8

Yalnızca belirli bir öğenin üzerine gelindiğinde görünen bir sayfada bir düğmem var. Ama bunu nasıl taklit edeceğimi anlayamıyorum ve daha sonra bağlantıyı tıklayıp, Capybara ve Selenium'u kullanarak test edebiliyorum.capybara üzerinde vurgulu fare

cevap

5

Sen gibi bu için özel tanımlanmış adımı kullanmak isteyebilirsiniz:

When /^I click "([^"]*)" inside element "([^"]*)"$/ do |button, element_name| 

İçinde, gibi bir şey yazmak:

begin 
    evaluate_script("$('#{element_name}').trigger('mouseover')") 
    rescue Capybara::NotSupportedByDriverError 
end 

Sonra da :)

istediğiniz butonuna tıklayın
+0

: Bu kodu deneyin tabanlı açılır menüleri hover ... biz açıkça – fringd

+0

O IMHO çalışması gerekir ... Bazı şeyler için etrafında sahte fareyi hareket yolunda çeşit gerekir . Bunun gibi daha açık olmaya çalışın: assessment_script ("$ ('div # name> ul> li> a: içerir (# {menu_name})'). Tetikleyici ('mouseover')"). Ayrıca, afaik selenium bir imleci x, y boyutlarında hareket ettirmeyi destekler, ancak bu eğlenceli değildir;) – socjopata

+0

socjopata, hangi capybara sürücüsünü kullanıyorsunuz ve SİZİ kullanıyorsunuzdur css: hover ve javascript veya jquery's .hover (. ..)? – fringd

0

Capybara + Selenium sürücüsünü kullanarak "mouse hover" ı simüle etmenin bir yolunu buldum. ne yazık ki bu css için değil iş

module Capybara 
    module Node 
    class Element 
     def hover 
     @session.driver.browser.action.move_to(self.native).perform 
     end 
    end 
    end 
end 
+0

Bu çalışmıyor –

+0

Selenium'un Chrome ve Firefox sürücüleri ile benim için çalışır. Cevap vermeden önce, bir saniyelik bir süre beklemeniz gerekebilir. Hala çalışmıyorsa, 'debugger' gemini kullanın, Capybara testlerinizden birinde' debugger 'öğesine bir çağrı ekleyin ve daha sonra Chrome/FF tarayıcı penceresinde neler olduğunu seyrederken Selenium komutları yazmayı deneyin. –

+0

Oh, FF'de yerel etkinlikleri etkinleştirmeniz gerekebilir. Selenium belgelerinde ... –

İlgili konular