首页 > 解决方案 > 我可以按像素(css位置)定位元素吗?Java,硒

问题描述

public void ReorderColumns() {

// Element which needs to drag.
WebElement From = driver.findElement(By.cssSelector(
        "body > div:nth-child(3) > div > div.dynamic > div > div:nth-child(2) > div > div.dynamic.dynamic  > svg"));

Actions act = new Actions(driver);

// Drag and Drop by Pixel.
act.dragAndDropBy(From, 146, 214).build().perform(); }

我需要拖放一个图标来重新排序网页上的列标题,每个标题都有自己的重新排序图标并且无法通过任何元素定位方法(xpath/CSS选择器/链接..等)指定它是有什么方法可以通过像素(CSS 位置)定位元素?

以上是我的代码:

  1. 在 CSS 选择器中,“动态”是指那些动态生成的,因此我不想使用它。
  2. 但要执行act.dragAndDropBy我需要一个 WebElement 参数:

dragAndDrop(source, target)

dragAndDropBy(source, xOffset, yOffset)

  1. 146, 214 是我要将第一个重新排序图标拖到的位置。

标签: javaseleniumelement

解决方案


我认为这可以帮助您解决问题:

    WebElement a = driver.findElement(By.cssSelector("your_selector"));
    WebElement b = driver.findElement(By.cssSelector("your_selector"));

    int x = b.getLocation().x;
    int y = b.getLocation().y;

    Actions actions = new Actions(driver);
    actions.moveToElement(a)
            .pause(Duration.ofSeconds(1))
            .clickAndHold(a)
            .pause(Duration.ofSeconds(1))
            .moveByOffset(x, y)
            .moveToElement(b)
            .moveByOffset(x,y)
            .pause(Duration.ofSeconds(1))
            .release().build().perform();

推荐阅读