Selenium WebDriver 拖放到滚动条

2024-04-13

我对 Selenium WebDriver 拖放有疑问。它不想拖放到滚动条中的 webelement。 我试过这个:

new Actions(SeleniumDriver.getDriver())).dragAndDrop(element, target).build().perform();

还尝试使用偏移量:

(new Actions(SeleniumDriver.getDriver()))
           .dragAndDropBy(element, xoffset, yoffset).build().perform();

并尝试使用:

Actions builder = new Actions(SeleniumDriver.getDriver());
builder.clickAndHold(element).build().perform();
builder.moveToElement(target).build().perform();
builder.release(target).build().perform();

有人知道滚动条的工作解决方案吗?谢谢你的帮助。


我通过使用 Java Robot 类找到了解决方案。

  1. 将 chrome 切换到全屏:

    DesiredCapabilities dc = new DesiredCapabilities();
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--kiosk", "test-type");
    dc.setCapability(ChromeOptions.CAPABILITY, options);
    WebDriver driver = new ChromeDriver(dc);
    
  2. 获取起始和目标元素的坐标:

    // start coordinates
    int startX = new Integer(element.getLocation().x);
    int startY = new Integer(element.getLocation().y);
    
    // destination dimensions
    int startWidth = new Integer(element.getSize().width);
    int startHeight = new Integer(element.getSize().height);
    
    // destination coordinates
    int destinationX = new Integer(target.getLocation().x);
    int destinationY = new Integer(target.getLocation().y);
    
    // destination dimensions
    int destinationWidth = new Integer(target.getSize().width);
    int destinationHeight = new Integer(target.getSize().height);
    
    // work out destination coordinates
    int endX = Math.round(destinationX + (destinationWidth / 2));
    int endY = Math.round(destinationY + (destinationHeight / 2));
    int sX = Math.round(startX + (startWidth / 2));
    int sY = Math.round(startY + (startHeight / 2));
    
  3. 使用 Java Robot 类进行拖放:

    Thread.sleep(1000);
    Robot robot = new Robot();
    robot.mouseMove(sX, sY);
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.mouseMove(endX, endY);
    robot.mouseRelease(InputEvent.BUTTON1_MASK);
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium WebDriver 拖放到滚动条 的相关文章

随机推荐

  • 使用特定网络接口执行请求

    是否可以使用特定的网络接口在 NodeJS 中执行 GET POST 请求 IE 使用 CURL 我可以调用两个 POST 调用 例如 curl X POST interface wlan0 http 192 168 1 5 resourc
  • 新改版(2015 年 9 月)iTunes connect UI 中 iOS 应用程序客户评论部分在哪里

    很抱歉这个明显愚蠢的问题 但是有谁能够找到新改版 2015 年 9 月 的 iTunes connect UI 中客户评论部分已移至何处 在之前的界面迭代中 当您在 iTunes connect 中选择应用程序时 会有一个 评论 选项卡 但
  • YouTube Iframe API - OnStateChange 突然不起作用[重复]

    这个问题在这里已经有答案了 直到美国东部标准时间下午 6 点左右 下面的代码都可以正常工作 但现在由于某种原因 onStateChange 没有触发 我尝试过多种浏览器 并让朋友检查过 看到什么明显错误了吗 div div div div
  • e.preventDefault 阻止点击

    我有以下代码来测试 e preventDefault 的工作原理 我认为这会阻止点击事件的发生 document ready function button click function e e preventDefault alert b
  • 运行 Terraform Plan/Apply 时出现 InvalidClientTokenID 错误

    我正在使用 Terraform 和用户数据在 AWS 中设置 HA 集群 我的 main tf 看起来像这样 provider aws access key access key secret key secret key resource
  • Node.js 抓取工具中的内存泄漏

    这是一个用 JavaScript 和 Node js 编写的简单抓取工具 用于抓取 Wikipedia 中的元素周期表元素数据 依赖项是jsdom https github com tmpvar jsdom用于 DOM 操作和链帮 http
  • jsPlumb 新连接处理程序:如何获取端点锚点位置?

    是的 所以我一直在玩 jsPlumb 假设我有一个有两个端点的 div 一个顶部中心 一个底部中心 创建新连接时 我可以使用下面的函数绑定到该事件 我的问题是 如何获得端点的锚位置 我确实获得了 Source 和 TargetEndpoin
  • 即使导出路径也找不到 conda 命令

    我将 anaconda3 安装到我的主目录中 这是我在终端中看到的 我的 bash profile 看起来像这样 导出 PATH Users spotter anaconda3 bin PATH 所以我不明白为什么 conda 不被识别 当
  • 从单个表中选择同一列两次但条件不同

    我想显示员工的姓名和号码以及老板的号码和姓名 如下所示 只有一张表 到目前为止我尝试过 SELECT ID Name Boss SELECT Name FROM Employees WHERE ID IN SELECT Boss FROM
  • 使用 pip 安装后找不到 cookiecutter 命令

    我想使用 cookiecutter 启动 django 项目 但由于某种原因找不到 cookiecutter 我所做的是 pip install cookiecutter 在那之后 cookiecutter https github com
  • C++ 支持编译时计数器吗?

    出于自省的目的 有时我想自动将序列号分配给类型或类似的东西 不幸的是 模板元编程本质上是一种函数式语言 因此缺乏实现此类计数器的全局变量或可修改状态 或者确实如此 根据请求的示例代码 include
  • 进度条的可见性

    当用户在一项活动中单击按钮时 我需要处理一些数据 因此屏幕看起来应用程序停止了 2 3 秒 这不是很多 但我想向用户提供一切正常的信息 IMO 最好的方法是进度条 仅在处理数据时才可见 我找到了ProgressBar的代码 它看起来像这样
  • 如何更改类内的变量?在Python中

    我已经开始编写一个空闲游戏的代码 但稍后我会添加某种类型的输入 我的问题是我的class库存不增加int s from def砍 我的到我的variable SP wood SP stone 它只是替换variable与它得到的号码def砍
  • 从 F# 调用 C# 异步方法会导致死锁

    我有一组 F 脚本 它们调用我们创建的各种库 其中许多库公开了最初用 C 编写的异步方法 最近我发现脚本停止工作了 我想距离我上次使用它们已经有半年了 当时它们还可以工作 我试图隔离问题并提出了以下代码来重现它 首先 我们考虑一个包含以下
  • 如何在 Pandas 数据框的多列上运行 Ta-Lib?

    我有一个数据框 其中包含多种证券的价格作为列 但我找不到一次性运行 TA Lib 的解决方案 因为它需要 numpy ndarray 如何在多种证券上运行 TA Lib 并获得数据帧作为回报 import talib as ta d sec
  • 缓存 VS 会话 VS cookie?

    缓存 会话 Cookie 的注意事项是什么 例如 我经常使用会话变量 有时当用户开始订购产品然后去吃午餐并在几个小时后回来并继续预订时 预订应用程序中有时会出现问题 我将预订存储在会话中 直到用户确认或中止预订 因此当用户只需单击浏览器中的
  • 使用单选按钮 PHP SQL 过滤搜索

    我有一个有效的搜索列表 搜索的工作原理是查找搜索词是否如姓名 家庭和工作 现在我想把这个搜索分开 我的意思是 创建三个单选按钮 单击第一个按钮按姓名搜索 单击第二个按钮按家庭搜索 单击第三个按钮按工作搜索 所以我的基本代码在这里 这里需要添
  • 使用 JSON.NET 作为 ASP.NET MVC 3 中的默认 JSON 序列化器 - 可能吗?

    是否可以使用JSON NET http json codeplex com 作为 ASP NET MVC 3 中的默认 JSON 序列化器 根据我的研究 似乎实现这一目标的唯一方法是扩展操作结果 http james newtonking
  • 如何更改 Laravel 中的日期语言?

    我想将我看到的日期的语言从英语更改为法语 strftime d B Y H M strtotime article gt created at 我们可以使用另一种方法与translatedFormat Carbon setLocale fr
  • Selenium WebDriver 拖放到滚动条

    我对 Selenium WebDriver 拖放有疑问 它不想拖放到滚动条中的 webelement 我试过这个 new Actions SeleniumDriver getDriver dragAndDrop element target