0

更新硒的webdriver不明錯誤:performActions(紅寶石)

我因爲複製一個更簡單的方法問題。

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

紅寶石:如預期

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 

當紅寶石運行JavaScript警告不打開;相反,Ruby會生成此堆棧跟蹤:

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

爲什麼這會失敗?使用driver.find_element(:id, "id").click作爲目標的元素按預期工作,因此它似乎與action類有關。

使用Webdriver 3.4.0和GeckoDriver 0.16.1運行Ruby 2.2.5。

原貼 - 不再相關

與webdriver的3.4.0和GeckoDriver 0.16.1運行的Ruby 2.2.5。

驗收測試是這樣做的:

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

element是jQuery UI的滑塊創建移動的滾動條 - 見https://jqueryui.com/slider/。我們正在使用版本jquery-ui-1.11.4.custom/jquery-ui.min.js

滑塊工作正常,當我手動使用它,但驗收拋出:

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' 

我們怎樣才能診斷Selenium::WebDriver::Error::UnknownError: performActions的原因時拋出?

我們已經嘗試這種解決方法,但它給了同樣的錯誤:

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

嗨,當您決定使用Ruby Selenium綁定時,爲什麼不使用WATIR,WATIR是Ruby Selenium綁定的良好包裝。添加了許多額外功能。 – RAJ

回答

0

最好的猜測是,你正在使用geckodriver的一些老版本,因爲動作類是越野車,並已最近實施。

我試過你的例子,它的工作就像一個魅力。這是它的截圖。 Screenshot

規格:
火狐:53.0.4
Geckodriver:0.16.1
硒的webdriver:3.4.0

讓我知道,如果它與最新版本的工作。
希望它有幫助!