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
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