2011-10-08 19 views
12

Selenium WebDriver sözdizimini kullanıyorum. O selenyum sunucu tabanlı sözdiziminde, aşağıdakileri yaparak bir javascript olayı olabilir, biliyorum:JS etkinliğini selenyumda nasıl yakarsınız?

Selenium selenium = new DefaultSelenium("localhost", server.getPort(), 
      "*iexplore", "http://www.eviltester.com"); 
selenium.fireEvent("lteq30", "blur"); 

nasıl (örneğin, FirefoxDriver) WebDriver ile oluşturulan, bir uygulamada aynı yaparsınız? Maalesef

cevap

17

açıkça Selenyum WebDriver tasarımcıları decided not to include Selenyum bu işlevselliği 2.

Bu genellikle düzgün çalışmıyorsa etrafında sentezlenmiş olayları çalışmak için bir hack beri WebDriver, bu özelliği içermez kasıtlı bir karardır . Yerel etkinlikler için mükemmel desteği sağlayarak bu ihtiyacı ortadan kaldırmayı tercih ediyoruz. Bu nedenle, numaralı telefonu ileriye taşımaya devam edeceğiz. Bir kullanıcı hiçbir zaman bir odak etkinliğini ateşlemez, form kontrolünü tıklar. Testlerin de yapması gereken bu. Bu sözlerimle

, sen istediğiniz herhangi javascript kodu yürütebilirsiniz. Böylece, nolu javascript ile olayları nasıl tetikleyeceğinize bakmalısınız. İlham almak için this StackOverflow question'a bakın.

FirefoxDriver driver = new FirefoxDriver(); 
driver.ExecuteScript("[your fire event javascript code]"); 

Ben temelde fireEvent aynı şeyi başarmak için bir sarıcı işlevi oluşturun eminim:

Sonra böyle bir şey yapabilirsiniz.

+0

basitçe işi veya Aslında kodunda belirli bir işlev çalıştırmak gerekiyor JS klik() olay çalıştıran mı? Eğer ikincisiyse, bu testlere girmeye çirkin bir bağımlılık gibi görünüyor. –

5

Başka bir çözüm:

((JavascriptExecutor) driver).executeScript("return document.getElementById('element').blur()"); 
+1

Neden bunun için bir iade beyanınız var? dönüş olmadan işe yaramaz mı? –

+1

İade ifadesi işlevsellik için gerekli değildir. Ancak dönüş bildirimi ile de yanıtı geri alırsınız. –

İlgili konular