【问题标题】:Selenium Webdriver: Scrollbars are getting in way of click actionSelenium Webdriver:滚动条妨碍点击操作
【发布时间】:2017-07-29 17:15:24
【问题描述】:

我正在模拟移动屏幕上进行测试,因此屏幕空间非常宝贵。我使用以下代码在单击之前将元素显示在视图中,但是,在 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 也有一个偏移参数,但据我所知,这不会影响元素在窗口中的定位方式。

有没有其他人遇到过这个问题?如果有,你是怎么解决的?

谢谢。

【问题讨论】:

    标签: javascript c# selenium selenium-webdriver selenium-chromedriver


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复,但我也试过了。我不认为 selenium 将滚动条识别为挡路。尝试等待可点击时,我仍然遇到同样的错误。
    猜你喜欢
    • 1970-01-01
    • 2014-11-17
    • 2021-09-11
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    相关资源
    最近更新 更多