java - 我可以按像素(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 位置)定位元素?
以上是我的代码:
- 在 CSS 选择器中,“动态”是指那些动态生成的,因此我不想使用它。
- 但要执行
act.dragAndDropBy
我需要一个 WebElement 参数:
dragAndDrop(source, target)
dragAndDropBy(source, xOffset, yOffset)
- 146, 214 是我要将第一个重新排序图标拖到的位置。
解决方案
我认为这可以帮助您解决问题:
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();
推荐阅读
- swift - UIScrollView 之外的按钮不可触摸
- php - echo 不要在生产中返回我完整的字符串,而是在开发中工作
- javascript - 属性的迭代进入无限循环
- vb.net - VB.NET 组合框和图片框
- html - :focus 在某些浏览器的下拉列表中不起作用
- android - 膨胀类 com.google.android.material.appbar.AppBarLayout 时出错
- python - Keras 预测时间测量:第一个值异常值
- angular - Angular 6 返回 Observable
- python - 为什么需要在循环中重复公式?
- javascript - 如何使用 jquery 实现自动和手动滑块并在悬停时暂停滑块