使用Java代码在SeleniumWebDriver中可拖动的两个框之间画一条线

使用Java代码在SeleniumWebDriver中可拖动的两个框之间画一条线,java,jquery,selenium,Java,Jquery,Selenium,我正在使用selenium web驱动程序,我的应用程序不支持css选择器。在我的应用程序中,我有一个需要添加流程图的流程图页面。我在流程图页面中拖放了两个矩形框,每个矩形框有四个箭头。 使用源矩形框中的一个箭头,该箭头应连接到目标矩形框的顶部箭头。我不知道如何连接这两个盒子。此外,如果我们将其中一个箭头从源点拖到目标点,它将在两个箭头之间画一条线 我尝试了很多方法,但无法在两个盒子之间连接和划一条线。我应该只用Java编写代码。请帮忙 此外,我观察到,当我试图找到两个不同矩形框箭头的坐标时,它

我正在使用selenium web驱动程序,我的应用程序不支持css选择器。在我的应用程序中,我有一个需要添加流程图的流程图页面。我在流程图页面中拖放了两个矩形框,每个矩形框有四个箭头。 使用源矩形框中的一个箭头,该箭头应连接到目标矩形框的顶部箭头。我不知道如何连接这两个盒子。此外,如果我们将其中一个箭头从源点拖到目标点,它将在两个箭头之间画一条线

我尝试了很多方法,但无法在两个盒子之间连接和划一条线。我应该只用Java编写代码。请帮忙

此外,我观察到,当我试图找到两个不同矩形框箭头的坐标时,它会显示相同的坐标i,e

两个箭头(源和目标)的位置显示相同的坐标(-9317,-9973) (-9317,-9973)

为什么它显示负的x点和y点。请回复我只写JAVA代码,因为我在我的程序中使用JAVA
我尝试使用下面的代码在JAVA中的两个流程图框之间画一条线——使用SeleniumWebDriver

WebElement selectarrow = driver.findElement(By.xpath("//circle[@cx='10']"));
        System.out.println(selectarrow.getLocation()); 

 Action drawAction = builder.moveToElement(selectarrow, 250, 50)  
                    .clickAndHold()
                    .moveByOffset(250,50)
                    .moveByOffset(270,110)
                    .release()
                    .build();
          drawAction.perform();

要使用select arrow作为源点,250,50作为区域的目标点绘制直线。

首先,让我们了解一些术语:Java和Selenium不绘制任何东西。Java用于执行Selenium代码。Selenium只是将事件发送到浏览器

硒的主要问题是你在做锁孔手术:当出现问题时,几乎没有反馈,很难看到你在做什么,即使一切看起来都很好,它仍然可能破裂。记住这一点

代码的作用:创建一系列鼠标点击和拖动事件,具体如下:

  • 相对于
    选择箭头的左上角,转到250、50
  • 点击并按住
  • 向右走250,向下走50
  • 向右走270,向下走110
  • 放开鼠标左键
这不是你描述的你想做的。执行您描述的操作的代码如下所示:

Action drawAction = builder.moveToElement(selectarrow, 0, 0)  
                .clickAndHold()
                .moveByOffset(250,50)
                .release()
                .build();
drawAction.perform();

请注意,您可能希望使用
5,5
而不是
0,0
,以确保您位于元素内部。但是当您这样做时,您可能还必须修改
moveByOffset()
,否则最后一点可能会关闭。

要在两个框之间画一条线

WebElement segmentPB = driver.findElement(By.cssSelector("#dojoUnique3 > img"));
                (new Actions(driver)).dragAndDropBy(segmentPB,300, 175).perform();

                 WebElement droppedSegmentBox = driver.findElement(By.cssSelector("#Flowchart > div:nth-child(3) > svg > g:nth-child(2) > g:nth-child(2) > g:nth-child(2) > g > g:nth-child(2) > g:nth-child(1) > image:nth-child(1)"));
                 System.out.println(droppedSegmentBox.getLocation());   

                Actions builder = new Actions(driver);
                builder.moveToElement(droppedSelectBox).perform();

                droppedSelectBox.click();

                WebElement selectArrow = driver.findElement(By.cssSelector("#Flowchart > div:nth-child(3) > svg > g:nth-child(2) > g:nth-child(3) > g:nth-child(2) > g:nth-child(4) > g > g:nth-child(3) > g > g > path:nth-child(2)"));

                System.out.println(selectArrow.getLocation());  
                // To draw the line between Two Process Boxes
                (new Actions(driver)).dragAndDrop(selectArrow, droppedSegmentBox).build().perform();

你好欢迎来到SO。在这里,我们不为您编写代码。请阅读我尝试使用以下代码在JAVA中的两个流程图框之间画一条线-使用selenium webdriverWebElement selectarrow=driver.findElement(By.xpath(“//circle[@cx='10']”);System.out.println(selectarrow.getLocation());如果没有看到HTML,代码就没有什么意义。而且,我看不出代码有什么问题。为什么你认为这是错误的?我也不明白你想如何用硒画线。硒没有吸引力。您可以使用Selenium,它只能将事件发送到网页以模拟用户。我们应该使用Java代码绘制。如果我知道,我会把代码贴在这里。谢谢你的详细解释。我尝试使用在两个矩形框之间画一条线的代码。是的,这是解决我问题的代码,我一直在尝试使用此代码,但有一个小错误…I,e movetoElement(droppedSelectBox)。缺少执行,我的团队发现并纠正了该错误。