0

aktualisierenSelen WebDriver Unknown: performActions (Rubin)

Ich habe das Problem auf einfachere Art und Weise, da repliziert.

Die HTML:

<html> 
<head> 
    <script src="../../../libs/jquery-1.11.3.min.js"></script> 
</head> 
<body> 
    <div id="abc" style="width:100px;height:100px;background-color:green;"></div> 
    <script type="text/javascript"> 
    $("#abc").on('click', function() { 
    alert('clicked'); 
    }); 
    </script> 
</body> 
</html> 

RUBY:

require 'selenium-webdriver' 

profile = Selenium::WebDriver::Firefox::Profile.new 
options = {} 
options[:profile] = profile 
driver = Selenium::WebDriver.for :firefox, options 
driver.manage.timeouts.implicit_wait = 10 

driver.navigate.to("the_above_html_file") 
driver.action.move_to(driver.find_element(:id, "abc")).click.perform 

Wenn der Ruby den JavaScript Alarm läuft nicht wie erwartet geöffnet; Stattdessen erzeugt Ruby diese Stack-Trace:

"performActions" 
/usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/response.rb:69:in `assert_ok': performActions (Selenium::WebDriver::Error::UnknownError) 
    from /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/response.rb:32:in `initialize' 
    from /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/http/common.rb:83:in `new' 
    from /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/http/common.rb:83:in `create_response' 
    from /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/http/default.rb:107:in `request' 
    from /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/http/common.rb:61:in `call' 
    from /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/w3c_bridge.rb:640:in `execute' 
    from /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/w3c_bridge.rb:417:in `send_actions' 
    from /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/common/w3c_action_builder.rb:164:in `perform' 
    from finder/tests/automated/test.rb:11:in `<main>' 

Warum schlägt das fehl? Das Targeting des Elements mit driver.find_element(:id, "id").click funktioniert wie erwartet, sodass es mit den Klassen action in Beziehung zu stehen scheint.

Ausführen von Ruby 2.2.5 mit Webdriver 3.4.0 und GeckoDriver 0.16.1.

Original-Post - nicht mehr relevant

Lauf Rubin 2.2.5 mit WebDriver 3.4.0 und GeckoDriver 0.16.1.

ein Abnahmetest tut:

element = @driver.find_element(:class, "ui-slider-handle") 
@driver.action.drag_and_drop_by(element, 50, 0).perform 

Wo element der bewegliche Schieber von jQuery UI Sliders erstellt ist - siehe https://jqueryui.com/slider/. Wir verwenden die Version jquery-ui-1.11.4.custom/jquery-ui.min.js.

Der Schieber korrekt funktioniert, wenn ich es manuell verwenden, aber die Abnahmeprüfung wirft:

TestDistanceSlider#test_store_container_and_markers_updated_when_slider_moved: 
Selenium::WebDriver::Error::UnknownError: performActions 
    /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/response.rb:69:in `assert_ok' 
    /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/response.rb:32:in `initialize' 
    /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/http/common.rb:83:in `new' 
    /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/http/common.rb:83:in `create_response' 
    /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/http/default.rb:107:in `request' 
    /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/http/common.rb:61:in `call' 
    /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/w3c_bridge.rb:640:in `execute' 
    /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/w3c_bridge.rb:417:in `send_actions' 
    /usr/local/rvm/gems/ruby-2.2.5/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/common/w3c_action_builder.rb:164:in `perform' 
    tests/automated/test_distance_slider.rb:18:in `_move_slider_by_percent' 
    tests/automated/test_distance_slider.rb:24:in `_move_slider_to_top' 
    tests/automated/test_distance_slider.rb:139:in `test_store_container_and_markers_updated_when_slider_moved' 

Wie können wir die Ursache des Selenium::WebDriver::Error::UnknownError: performActions diagnostizieren, die ausgelöst wird?

Wir haben dieses Problem zu umgehen versucht, aber es gibt den gleichen Fehler:

@driver.action.click_and_hold(element).move_by(100, 0).release.perform                
+0

Hallo, Wenn Sie sich entscheiden, Ruby Selenium Binding zu verwenden, warum verwenden Sie nicht WATIR, WATIR ist der gute Wrapper um Ruby Selen Binding. Viele zusätzliche Funktionen hinzugefügt. – RAJ

Antwort

0

beste Vermutung wäre, dass Sie einige ältere Version von geckodriver verwenden, weil Aktionen Klasse Buggy war und vor kurzem umgesetzt wurde.

Ich versuchte Ihr Beispiel und es funktionierte wie ein Charme. Hier ist ein Screenshot davon. Screenshot.

Specs:
Firefox: 53.0.4
Geckodriver: 0.16.1
Selen-WebDriver: 3.4.0

Lassen Sie mich wissen, ob es mit den neuesten Versionen gearbeitet.
Hoffe es hilft !!