仅在 TFS 上"element click intercepted"



我有大约 130 个 Selenium UI 测试,用于我们目前正在开发的 Web 应用程序。

我遇到的问题是,每当我通过Visual Studio的测试资源管理器(vstest(在本地运行测试时,我以前从未遇到过此错误。 问题是,当测试在 TFS 上运行时,某些测试由于此消息而不断失败(也在 TFS 上使用 vstest(。element click intercepted

我也 100% 确定没有覆盖元素会干扰 click 方法,因为在本地运行时测试永远不会因该消息而失败。

知道这会是什么吗?

我遇到了所有本地测试都可以通过的问题,但是正如您在通过 Jenkins 或 TFS 运行测试时提到的,我会收到随机错误,通常是指示我的元素不可单击的错误等 - 问题最终是浏览器大小。

我开始在无头模式下运行我的测试,并指定了一个大的浏览器大小。切换到--headless并设置浏览器大小最终为我解决了我的大部分问题:

var headlessOptions = new ChromeOptions();
headlessOptions.AddArgument("--headless");
headlessOptions.AddArguments("--disable-gpu");
headlessOptions.AddArguments("--window-size=1920,1200");

您也必须使用--headless才能正常工作。我尝试通过仅设置窗口大小来运行测试,但测试仍然会失败,因为虚拟机的分辨率不足以处理我设置的浏览器大小。

您可以使用 2 种方法解决此问题。 1.在无头模式下运行镀铬 2.在单击或与之交互之前查看元素

此问题的根本原因是,在本地测试时,浏览器加载的浏览器大小与浏览器大小不同

如果您打算在非无外设模式下运行测试,则可以使用以下代码来实现结果。

IWebElement element= driver.FindElement(By.Id(selector));
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView(true);", element);

我在通过 VM 上的管道执行测试时收到此错误。但是测试在我的本地计算机上正确执行。

问题是我的本地计算机的分辨率是 1920 X 1040,而 VM 上的分辨率是 1040 X 780。

我添加了一段代码来截取屏幕截图并确定了此问题。发现另一个元素覆盖在我想要的元素上,所以没有办法点击它。

我使用IJavaScriptExecutor单击所需的元素并能够解决此问题。希望这有帮助。干杯!

最新更新