2013-12-21 115 views
2

我試圖執行拖放使用硒的webdriver和紅寶石拖放操作,我嘗試了以下選項:紅寶石硒的webdriver拖放

選項1:基於http://rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium/WebDriver/Element#drag_and_drop_on-instance_method

el1 = @driver.find_element(:css, "div.captcha div.sliderCaptcha div.arrow") 
el2 = @driver.find_element(:css, "div.captcha div.sliderCaptcha div.dottedBorder") 

el1.drag_and_drop_on el2 

選項2 :

el1 = @driver.find_element(:css, "div.captcha div.sliderCaptcha div.arrow") 
el2 = @driver.find_element(:css, "div.captcha div.sliderCaptcha div.dottedBorder") 
@driver.action.drag_and_drop(el1, el2).perform 

選項3:

el1 = @driver.find_element(:css, "div.captcha div.sliderCaptcha div.arrow") 
el2 = @driver.find_element(:css, "div.captcha div.sliderCaptcha div.dottedBorder") 
@browser.action.drag_and_drop(element, target).perform 

當我做@driver.find_element(:css, "div.captcha div.sliderCaptcha div.arrow").click@driver.find_element(:css, "div.captcha div.sliderCaptcha div.dottedBorder").click代碼是能夠點擊對象,即它能夠找到元素,但由於某種原因不能拖放。上述拖放選項都不起作用。

+0

有點陌生,看到直接使用驅動程序沒有水豚界面。在Capubara使用第一選項http://rubydoc.info/gems/capybara/0.4.0/Capybara/Driver/Selenium/Node#drag_to-instance_method'DEF drag_to(元件) native.drag_and_drop_on(element.native) end'你也可以檢查兩個元素的可見性。 – andrykonchin

回答

2

我已經有很多成功的拖放,但發現我不得不將我的拖放分成幾個動作,以允許它在我的應用程序中工作。

例如,我必須在初始點擊500毫秒後進入睡眠狀態,因爲javascript要求用戶在允許拖放之前按住該時間段。另外,我不得不在初始拖動後重新放置拖放目標,因爲它只在拖動開始後出現。

我不是說你的應用程序出現這種情況,但它可能會給你一些提示。

例如,我的代碼看起來像這樣;

el1 = @driver.find_element(:css, "div.captcha div.sliderCaptcha div.arrow") 

el_in_between = @driver.find_element(:css, "div.something") 

@browser.action.click_and_hold(el1).perform 

sleep 0.5 

@browser.action.move_to(el_in_between).perform 

el2 = @driver.find_element(:css, "div.captcha div.sliderCaptcha div.dottedBorder") 

@browser.action.move_to(el2).release.perform 

希望這強調了在一些網站,拖放是不太使用drag_and_drop方法和動作建設者可以拆分內置簡單

+0

我試過上面的解決方案。但它不適合我。我正在嘗試自動註冊https://secure.photobucket.com/register。它有一個箭頭來滑動。我正在嘗試使用selenium-webdriver腳本來完成它。 – Shailendra

+3

哈!箭頭上方的標題顯示「滑動箭頭以證明您是人類」。它不應該是自動的!你爲什麼自動化這個頁面? –

+0

我需要它來自動化,因爲我的項目需要它。 – Shailendra

相關問題