2012-04-12 359 views
1

我的頁面上有畫布元素,我想單擊它的某個部分。 我知道,我必須用ActionBuilder要做到這一點,所以我tryed驗證碼:Webdriver。點擊座標上的Canvas元素

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文檔:

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

根據這一點,我的結論,應該只是在兩條線等執行這些操作:

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 

可悲的是,這一切都沒有效果(對我來說IE):(

+0

我解決我的問題在偏遠的IE瀏覽器這樣的: '硒:: ::的webdriver遠程::功能:: internet_explorer(: javascript_enabled => true,:native_events => true)' – murtabak 2013-01-15 12:13:56