2012-04-12 175 views
1

私のページにキャンバス要素があり、その一部をクリックしたいと思います。 私はこれを行うにはActionBuilderを使用しなければならないことを、知っているので、私はこのコードをしようと試み:Webdriver。キャンバス要素を座標でクリックしてください。

element = driver.find_element(:xpath, canvas_xpath) 
action.move_to(element, 100, 100).click.perform 

しかし、このコードだけcanvas要素の中央にクリックして、どのような方法でマウスを移動しないでください。

マウスをいくつかの座標に移動する方法はありますか? (AutoITスクリプトは言及しません - 私はLinuxで開発します)

答えて

1

あなたはaction.move_to(element).move_by(100, 100).click.performを試しましたか?

6

私はIEで同じ問題があります。 ShockwaveNNのコードは、FirefoxとChromeで動作します。問題は、要素の中央で「クリック」がクリックされることだと思います。以下はaction_builder.rbのドキュメントです:

element = driver.find_element(:xpath, canvas_xpath) 
driver.action.move_to(element, 100, 100).perform 
driver.action.click.perform 

または

element = driver.find_element(:xpath, canvas_xpath) 
driver.action.move_to(element).perform 
driver.action.move_by(100, 100).click.perform 

# 
    # Clicks in the middle of the given element. Equivalent to: 
    # 
    # driver.action.move_to(element).click 
    # 
    # When no element is passed, the current mouse position will be clicked. 
    # 
    # @example Clicking on an element 
    # 
    # el = driver.find_element(:id, "some_id") 
    # driver.action.click(el).perform 
    # 
    # @example Clicking at the current mouse position 
    # 
    # driver.action.click.perform 
    # 
    # @param [Selenium::WebDriver::Element] element An optional element to click. 
    # @return [ActionBuilder] A self reference. 
    # 

本と私の結論によると、それだけのような二行でこれらのアクションを実行するべきです

悲しいことに、これのどれもうまくいきません(私のIEの場合):(

+0

私はこれでリモートIEで私の問題を解決:( 'セレン:: webdriverを::リモート::機能:: internet_explorer: javascript_enabled => true、:native_events => true) ' – murtabak

0
+0

リンクを使用して回答を書くことは本当の答えではありません。なぜなら、リンクが変更/削除されると回答が終了するからです。 – FraZer