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

Selenium Automation拖放功能问题

戚森
2023-03-14

我试图拖放一个元素,但无法在所需位置释放该元素。

问题是:我想把元素放在一个仅在运行时可见的占位符中(即:当我点击并按住元素并移动到目标元素时),在移动到目标元素后,占位符在我应该释放元素的位置被激活。

以下是我的代码:(FirefoxDriver初始化后)

    String  sourceelement ="#ctl00_ctl44_g_0beb5998_7319_49ac_9956_28684e341659_dvCart img";
    String destinationelement = "#dvZone_LeftColumn";
    Actions builder = new Actions(driver);
    builder.clickAndHold(driver.findElement(By.cssSelector(sourceelement)));
    builder.moveToElement(driver.findElement(By.cssSelector(destinationelement)));
    builder.perform();
    Thread.sleep(250);

    WebElement holder = driver.findElement(By.className("placeholder"));
    builder.release(holder).perform();

以下是HTML源代码片段(发布元素部分):

“”在“”下被激活,具体取决于拖动后我将该元素带到的位置。

问题:

1-在执行脚本时,如果我移动鼠标,那么元素就会在占位符中释放,这样执行就成功了(但当时必须移动鼠标才能在占位符中释放元素,这是不应该在自动化中完成的)

2-如果我不移动鼠标,脚本无法说“无法找到带有类名=占位符的元素”

请帮忙

提前谢谢

共有1个答案

祝昊东
2023-03-14

看起来只有在按住源代码并移动鼠标时,目标占位符才会激活。

我建议您首先单击并按住source元素并将其移动一定的偏移量,这将使您的目标占位符可见。通过这种方式,您可以确保不会出现“无法找到带有类名=占位符的元素”错误。

        String  sourceelement ="#ctl00_ctl44_g_0beb5998_7319_49ac_9956_28684e341659_dvCart img";
        String destinationelement = "#dvZone_LeftColumn";
        Actions builder = new Actions(_driver);
        builder.clickAndHold(_driver.findElement(By.cssSelector(sourceelement)));

        builder.moveByOffset(1, 1).perform();// this will move the mouse by 1,1 which will be holding your source element

        builder.moveToElement(_driver.findElement(By.cssSelector(destinationelement)));
        builder.perform();
        Thread.sleep(250);


        WebElement holder = _driver.findElement(By.className("placeholder"));
        builder.release(holder).perform();

 类似资料:
  • 本文向大家介绍python3+PyQt5实现拖放功能,包括了python3+PyQt5实现拖放功能的使用技巧和注意事项,需要的朋友参考一下 本文是对《Python Qt GUI快速编程》的第10章的例子拖放用Python3+PyQt5进行改写,对图表列表,表格等进行相互拖放,基本原理雷同,均采用setAcceptDrops(True)和setDragEnabled(True)。 运行结果: 以上就

  • 问题内容: 我正在开发一个Web应用程序,正在尝试为其提供功能齐全的窗口系统。目前进展顺利,我只遇到一个小问题。有时,当我去拖动应用程序的一部分时(通常是窗口的角落div,应该触发调整大小的操作),Web浏览器变得很聪明,并认为我的意思是拖放东西。最终结果是,当浏览器进行拖放操作时,我的动作被暂停。 是否有一种简单的方法来禁用浏览器的拖放?理想情况下,我希望能够在用户单击某些元素时将其关闭,但要重

  • 问题内容: 我正在开发一个Web应用程序,正在尝试为其提供功能齐全的窗口系统。目前进展顺利,我只遇到一个小问题。有时,当我去拖动应用程序的一部分时(通常是窗口的角落div,这应该触发调整大小的操作),Web浏览器变得很聪明,并认为我的意思是拖放东西。最终结果是,当浏览器进行拖放操作时,我的动作被暂停。 有没有一种简便的方法来禁用浏览器的拖放?理想情况下,我希望能够在用户单击某些元素时将其关闭,但是

  • 本文向大家介绍脚本div实现拖放功能(两种),包括了脚本div实现拖放功能(两种)的使用技巧和注意事项,需要的朋友参考一下 网页上有很多拖曳的操作,比如拖动树状列表,可拖曳的图片等。 1.原生拖放实现 2 jQuery UI draggable实现拖放 自行实现拖曳方法比较负责,jQuery UI提供了可拖曳的事件,允许用户非常简单的为一个div添加拖曳效果。 jQuery UI主要通过dragg

  • 本文向大家介绍Java实现鼠标拖放功能的方法,包括了Java实现鼠标拖放功能的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java利用鼠标的拖放来实现交换程序数据的方法,即所谓的鼠标拖放功能。鼠标的拖放功能在图形化系统中非常常用,Java 提供了java.awt.dnd 和java.awt.datatransfer 包来支持该功能。本例演示如何在程序中实现拖放的实现方法,当在窗口上

  • 本文向大家介绍js实现拖拽功能,包括了js实现拖拽功能的使用技巧和注意事项,需要的朋友参考一下 效果图:(红色方块可任意拖动) 代码如下: 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!