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

Selenium/Java:拖放操作不适用于不可见元素

斜单鹗
2023-03-14

在安装了最新浏览器的情况下使用Selenium w/Java绑定和ChromeDriver 2.3

在花了足够多的时间试图找到一个解决方案后,我现在被难倒了。我正在尝试将一个元素拖放到另一个元素。唯一需要注意的是,我需要移动到的元素目标只有在移动源元素后才可见。有什么建议吗?

因此,这里是我点击并按住的源元素的屏幕截图,然后拖动它,我也可以删除两个选项:

元素是源

因此,当我按住鼠标并拖动一小部分时,根据下面的屏幕截图,可以看到掉落的目标:

使用源拖动鼠标后可见的目标

下面是我尝试过的最新代码片段,我相信这应该会实现,但什么都没有发生,也没有继续到线程中。sleep(),仅用于观察目的。以下是WebDriverWait和WebDriver的健康实例:

 driverWait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='user-info ng-binding'][text()='Sample Text']")));           
 driverWait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='user-info ng-binding'][text()='Sample Text']"))); 
 source = driver.findElement(By.xpath("//div[@class='user-info ng-binding'][text()='Sample Text']"));

 //move to element, click and hold, and then move it to expose the available options
 actions.moveToElement(source).clickAndHold().pause(Duration.ofSeconds(1)).moveByOffset(10, 10).pause(Duration.ofSeconds(1)).build().perform();
 Thread.sleep(10000);

所以这背后的想法就是点击并按住源,稍微移动它以显示目标,然后找到目标,并使用动作。release()将目标移动到源代码上,但当我调试它时,它不会对元素对元素执行任何操作,而是直接转到线程。睡眠()。我读过很多关于虫子的书。如有任何建议,将不胜感激。

共有1个答案

曾嘉言
2023-03-14

我知道这是一个老问题,但我一直在寻找解决方案,但最终我只是让隐藏区域可见。我知道这不理想,但似乎有效。

JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("arguments[0].setAttribute('style', 'display:block')", targetElement);
 类似资料:
  • 拖放操作不适用于selenium 3.8。 下面是该元素的JS代码 这就是我尝试过的。但这只是选择元素。保持和放弃是不会发生的。 我也试过这个。 也尝试过机器人。每次我只能看到源元素和目标元素都被选中。但不是被拖拽掉的。 还尝试了dragAndDrop ActionsChain。那也没用。

  • 我正在使用Selenium和Java自动化拖放。以下是在无头模式下使用chrome驱动程序执行拖放的代码。 在无头chrome驱动程序中执行时不会发生任何情况。但是,在非无头chrome驱动程序中,这可以正常工作并执行拖放。 注意-同时使用dragAndDropBy(源、目标)和dragAndDropBy(源、xOffset、yOffset)进行了尝试。这两种方法在非无头chrome中也不起作用

  • 我试图在元素上执行拖放操作,但它没有发生。 这是我正在处理的页面的片段。在这里,我试图将磁贴“时间”拖动并放置在磁贴“批准”的位置。截图 这是我正在使用的代码。 代码 超文本标记语言 源元素 目标元素 如果你需要更多细节,请告诉我。

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

  • 我尝试了好几种方法 情景1: 方案2: 还有很多其他方法,通过移动到放置位置并在其上添加等待,但它们似乎都不起作用。 当拖放位置不可见时,是否有其他方法进行拖放。 任何帮助都将不胜感激。 谢谢

  • 硒的新手!我正在尝试使用selenium在Craigslist上列出待售房屋。 我在从下拉选择框中选择选项时遇到问题。 我收到以下错误: 元素不可操作异常:消息:元素不可交互:元素当前不可见,可能无法操作 使用“选择”也会产生同样的错误: 该元素存在: 但这并不是棘手的: 元素不可交互异常: 消息: 元素不可交互 我注意到选择元素是隐藏的,选择由选择框上的下一个元素控制。 我可以通过激活元素并使用