拖放不适用于无头chromedriver

时间:2018-08-21 04:20:59

标签: java drag-and-drop selenium-chromedriver headless-browser

我正在使用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();

在无头chrome驱动程序中执行此操作不会发生任何事情。但是,在非无头chrome驱动程序中,这可以正常工作,并且可以执行拖放操作。

注意-尝试同时使用dragAndDropBy(源,目标)和dragAndDropBy(源,xOffset,yOffset)。这两种方法在非无头镀铬中也不起作用

1 个答案:

答案 0 :(得分:0)

我认为我们无法帮助您调试Chrome浏览器与无头版本之间的差异。我认为这不是一个已知问题,也没有已知的解决方法。

建议:

  1. 使用html代码创建一个最小测试,通过该测试,您可以证明dragAndDrop仅能毫无失败地失败,然后将其公开发布。
  2. 然后创建一个铬虫:https://www.chromium.org/for-testers/bug-reporting-guidelines
  3. 从无头邮件列表中寻求支持,并链接到示例失败的测试:https://groups.google.com/a/chromium.org/forum/#!forum/headless-dev

也许在创建最小测试时,您会弄清楚它为什么起作用的原因,但不适用于您的特定情况。该应用程序的行为不同于浏览器:)