对于我们当前正在开发的Web应用程序,我大约有130个Selenium UI测试。
我的问题是,每当我通过Visual Studio的测试资源管理器(vstest)在本地运行测试时,我从未遇到过此错误。
问题是,当测试在TFS上运行时(由于也在TFS上使用vstest),某些测试由于此消息而仍然失败。 element click intercepted
我也100%确信没有任何叠加元素会干扰click方法,因为在本地运行时测试不会因该消息而失败。
有什么想法吗?
答案 0 :(得分:2)
这听起来像是我与詹金斯测试执行与本地测试执行之间永无止境的战斗。
我现在可以告诉你,问题可能出在运行测试的浏览器大小上。
我遇到了所有本地测试都可以通过的问题,但是当您通过Jenkins或TFS运行测试时,我会收到随机错误,通常是表明我的元素不可点击的错误,等等。
您是否正在以无头模式运行测试?如果没有,您应该立即开始。切换到--headless
并设置浏览器大小最终为我解决了我的大多数问题:
var headlessOptions = new ChromeOptions();
headlessOptions.AddArgument("--headless");
headlessOptions.AddArguments("--disable-gpu");
headlessOptions.AddArguments("--window-size=1920,1200");
您也必须使用--headless
才能正常工作。我试图仅通过设置窗口大小来运行测试,但是无论如何测试仍然会失败,因为虚拟机的分辨率不足以处理我设置的浏览器大小。
答案 1 :(得分:0)
您可以使用2种方法解决此问题。 1.无头模式下运行chrome 2.单击或交互之前先对元素进行评分
此问题的根本原因是由于浏览器在本地测试时加载的浏览器大小不如浏览器大小
如果打算以非无头模式运行测试,则可以使用以下代码来获得结果。
IWebElement element= driver.FindElement(By.Id(selector));
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView(true);", element);