硒空闲,直到我移动鼠标

问题描述

有一个让我发疯的 Selenium(或更可能是网页)问题。如果我物理移动鼠标,页面只会继续执行。我已经尝试了从尝试模拟悬停、点击、键盘按下等到 Thread.sleeps 的所有方法。没有什么可以解决它,但请放心,鼠标的单一移动足以让它再次运行(这让我认为这是一个网页问题)。如果我不移动鼠标,或以某种方式与页面进行物理交互,它将无限空闲。

通过故障排除,似乎与该页面的每一次交互(无论是显式等待、元素点击还是 driver.getAttribute)都足以让它空闲一次,之后所有交互都按预期执行。

网页是有角度的,我通常与之交互的元素是位于 mat-card 元素内的输入和按钮元素。 当页面第一次加载时,会运行查询以确定元素的值/状态。因此,如果数据库中的值是某种类型,则会触发启用某些按钮,并且输入元素具有不同的值等。我相信页面加载的方式可能会导致此问题。 只有此网页会导致此问题,网站的其余部分均按预期执行。

我有一个只有 5 秒的隐式等待超时,所以如果它没有触发并停止执行,这不是元素可见性问题。

我只在网上看到过一个这样的例子,那就是一个在这里使用量角器的人:selenium-webdriver idles until mouse is moved

如果有人知道我尝试过的可能导致这种情况的原因,我将不胜感激,即使这是确认我无能为力,只能与开发人员讨论这个问题,看看是否它在他们身边等。

解决方法

在向页面发出 driver.get 请求后,我设法通过“强制”鼠标移动来解决此问题,而无需立即等待。如果我添加等待,它会遇到同样的空转问题,但是有了这个,它 98% 的时间都可以工作。比以前好多了。我无法解释为什么我需要这样做,但我只知道 100% 是页面加载的方式。

    Actions action = new Actions(driver);
    action.moveToElement(driver.findElement(By.xpath("/html/body/app-root/app-nav-bar/mat-toolbar/div/mat-icon")));
    action.perform();
    action.moveByOffset(15,15);
    action.perform();

在进一步测试中,如果我在 Windows 10 中移动“桌面”,它似乎会挂起,并且几乎可以肯定地排除了这将在无头模式下工作的可能性。仍在寻找真正的解决方案,因为上面是一个快速而肮脏的“修复”

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...