当前位置: 首页 > 知识库问答 >
问题:

Ruby selenium webdriver拖放

戈嘉慕
2023-03-14

我试图执行拖放操作使用selenium网络驱动程序和红宝石,我尝试了以下选项:

选项1:基于http://rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium/WebDriver/Element#drag_and_drop_on-实例法

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.captchadiv.slider验证码div.arrow)。单击@driver.find_element(: css,div.captchadiv.slider验证码div.dotted边界)。单击代码能够单击对象,即它能够找到元素,但由于某种原因不能拖放。以上拖放选项都不起作用。

共有1个答案

叶裕
2023-03-14

我在拖放方面取得了相当大的成功,但发现我必须将拖放分解为几个操作,以允许它在我的应用程序中工作。

例如,我必须在初次点击后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

希望这能突显出,在一些网站中,拖放并不像使用内置的拖放方法那么简单,动作生成器可以拆分

 类似资料:
  • 问题内容: 我正在使用TransferHandler将数据从JPanel作为JLabel传递到JTextArea (单击左侧面板中的某处以创建要拖动的JLabel) 数据的传输工作正常,但是我还想“显示” JLabel,因为 它与鼠标指针一起被拖动。 如果您注释掉 您将看到我想要它的外观。(但当然不会传输数据)。 如何既可以进行传输又可以使JLabel跟随鼠标光标? 这是代码: 问题答案: 另一个

  • 我正在使用HTML5拖动 问题是,如果我将某些东西拖到目标子事件中,则触发他的掉落事件(这是正确的),但最终也会触发目标父事件。代码如何理解删除的元素只是目标子元素?

  • 我正在使用本机拖放html5 api开发拖放界面。我们已经在其他部分使用了jQuery拖动,但是它在这个特定部分的表现很差,所以我们使用原始的JavaScript。 本质上,标记看起来像这样... 我为“dragstart”创建一个addEventListener并运行以下函数 它将我的类完美地应用于原始元素,但我似乎不能移动原始元素。浏览器创建克隆/幽灵图像...我看到你可以创建自己的图像显示,

  • 问题内容: 嘿,我一直在阅读本教程,以了解PyQt4中的拖放方法。但是,我无法理解以下几点。如果某事能够使我更清楚,那将是很好的。 为什么会有单独的self.button.move()和e.setDropAction()self.button.move()实际不移动按钮本身吗?有人可以解释一下drag.setHotSpot和drag.start()的作用吗?谢谢。 问题答案: 该教程已严重过时。从

  • 拖放是一种非常流行的用户界面模式。它的概念很简单:点击某个对象,并按住鼠标按钮不放,将鼠标移动到另一个区域,然后释放鼠标按钮将对象“放”在这里。拖放功能也流行到了Web 上,成为了一些更传统的配置界面的一种候选方案。 拖放的基本概念很简单:创建一个绝对定位的元素,使其可以用鼠标移动。这个技术源自一种叫做“鼠标拖尾”的经典网页技巧。鼠标拖尾是一个或者多个图片在页面上跟着鼠标指针移动。 单元素鼠标拖尾

  • #div1, #div2 {float:left; width:100px; height:35px; margin:10px;padding:10px;border:1px solid #aaaaaa;} function allowDrop(ev) { ev.preventDefault(); } function drag(ev) { ev.dataTransfer.setData("Tex

  • 我试图使用HTML5拖放在我的网站。dragstart和dragend被解雇,但dragenter,draglet,dragover和下降不工作,直到我刷新页面。 侧边栏中树中的节点应该能够拖动到表中的单元格。树是用jsTree制作的。我已经在火狐、Chrome和IE上尝试过了。他们都有相同的行为。 边栏树(rhtml文件) 删除操作代码(咖啡脚本文件) 表(页面来源) 我试着拉小提琴,但效果很好

  • 我工作在一个应用程序实现新的拖放角材料CDK和我试图取消拖动事件的元素按下,我的意思是,我开始拖动元素,但如果我按当我拖动元素时,它应该回到我开始拖动它的位置,到目前为止,我还没有找到这样做的方法,有人知道我怎么做吗?在cdk留档里没有关于这个的任何想法。我试着做这样的事情。 样板 Ts组件 但到目前为止还没有成功。