Selenium webdriver:滚动条正在加入点击操作



我正在模拟的移动屏幕上测试,因此屏幕空间很高。我正在使用以下代码在单击它之前将元素视为视图,但是,在Chrome上,在单击操作发生之前,滚动板叠加层不会清除。

IJavaScriptExecutor je = (IJavaScriptExecutor)Driver.Instance;
je.ExecuteScript("arguments[0].scrollIntoView(true); window.scrollBy(50, -200);", element);
Thread.Sleep(700);

我可以使睡眠更长,但这会大大减慢我的测试。我已经尝试了我能想到的一切,似乎没有任何作用。

我尝试过的东西

初始化ChromeDriver时禁用滚动条叠加。(没有删除滚动覆盖) chromeOptions.AddArguments("disable-overlay-scrollbar")

使用动作API

 Actions btnAction = new Actions(Driver.Instance);
 btnAction.MoveToElement(element).Click().Perform();

MoveToElement也有一个争论来抵消,但据我所知,这不会影响元素在窗口中的位置。

其他人曾经遇到过这个问题吗?如果是这样,您将如何解决?

谢谢。

您可以使用显式等待而不是Thread.Sleep(700)来确保单击元素在单击它之前

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.ElementToBeClickable(element)).Click();

最新更新