我正在使用Selenium和Java自动拖放。以下是用于在无头模式下使用 chrome 驱动程序执行拖放的代码。
Point classname = targetElement.getLocation();
int xcordi = classname.getX();
int ycordi = classname.getY();
Actions action = new Actions(driver);
action.clickAndHold(sourceElement).moveByOffset(xcordi, ycordi).release(targetElement).build().perform();
在无头铬驱动程序中执行此操作时,没有任何反应。但是,在非无头铬驱动程序中,这工作正常并执行拖放。
注意 - 已尝试同时使用dragAndDropBy(source,target(和dragAndDropBy(source,xOffset,yOffset(。这两种方法在非无头铬中也不起作用
我认为我们无法帮助您调试Chrome浏览器与无头版本之间的差异。我不认为这是一个已知问题,也没有已知的解决方法。
一个建议:
- 使用 html 代码创建一个最小的测试,您可以使用它证明 dragAndDrop 失败只是无头的,公开发布它。
- 之后创建一个铬错误:https://www.chromium.org/for-testers/bug-reporting-guidelines
- 从无头邮件列表中寻求支持,链接到您的示例失败测试:https://groups.google.com/a/chromium.org/forum/#!forum/headless-dev
也许在创建最小测试时,您会弄清楚为什么它确实有效,但不适用于您的具体情况。应用程序的行为与浏览器的行为不同,而不是浏览器:)