【问题标题】:Ruby selenium webdriver drag and dropRuby selenium webdriver 拖放
【发布时间】:2013-12-21 19:39:58
【问题描述】:

我正在尝试使用 selenium webdriver 和 ruby​​ 执行拖放操作,我尝试了以下选项:

选项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 时,代码能够单击对象,即它能够找到元素但由于某种原因无法拖放。以上拖放选项均无效。

【问题讨论】:

标签: ruby drag-and-drop selenium-webdriver


【解决方案1】:

我在拖放方面取得了相当大的成功,但我发现我必须将拖放分成几个动作才能让它在我的应用程序中工作。

例如,我必须在第一次点击后休眠 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

希望这突出了在某些网站中,拖放并不像使用内置的拖放方法那么简单,并且可以拆分操作构建器

【讨论】:

  • 我尝试了上述解决方案。但这对我不起作用。我正在尝试自动化secure.photobucket.com/register 的注册过程。它有一个可以滑动的箭头。我正在尝试使用 selenium-webdriver 脚本来做到这一点。
  • 哈!箭头上方的标题写着“滑动箭头以证明您是人类”。它不应该是自动化的!你为什么要自动化这个页面?
  • 我需要它来自动化,因为我的项目需要它。
猜你喜欢
  • 1970-01-01
  • 2012-04-05
  • 2014-07-23
  • 2023-03-17
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-14
相关资源
最近更新 更多