【问题标题】:C# selenium webdriver chrome driver wait until modal window is completely goneC# selenium webdriver chrome driver 等到模态窗口完全消失
【发布时间】:2013-11-24 00:29:56
【问题描述】:

我目前正在使用带有 C# webdriver 的 chrome 驱动程序。我面临的问题之一是等待“存在”或“可见”在我的情况下不起作用,因为模式窗口需要一些时间才能消失。我收到了这个错误:

System.InvalidOperationException:未知错误:元素在点 (x,x) 处不可点击。其他元素会收到点击:

原因是在我单击“确定/取消”后模态背景仍然存在几秒钟,但背景后面的元素对 selenium 可见且可点击。

那么我如何“等待”直到模态背景完全消失,然后再尝试点击它后面的东西?这不是原生 javascript 模式。这是一种精美的第三方模式,可以通过透明的“封面”滑入和滑出视图,当它打开时可以防止点击其他任何东西。

【问题讨论】:

  • 你试过Thread.Sleep(...) 吗?
  • 贴出你的代码也许有助于更好地回答你
  • Selenium 已经有一个内置机制来强制浏览器等待。检查它的文档here
  • 那么什么“第三方工具”?它是一个 jQuery 插件吗?你检查对话框的.Displayed 属性了吗?
  • @AbuHamzah 我实际上在这里读到使用 Thread.Sleep 是不好的做法。我想知道为什么 webdriver 中没有简单的 Pause() X 秒?

标签: c# selenium webdriver selenium-chromedriver


【解决方案1】:

您可以使用 ExpectedConditions API,例如:

var wait = new WebDriverWait(driver, TimeSpan.FromMinutes(1));
var element = wait.Until(ExpectedConditions.ElementIsClickable(By.Id("elementId")));

这将在 1 分钟内尝试,直到元素可点击,如果没有发生,它将引发异常。

【讨论】:

    猜你喜欢
    • 2018-03-18
    • 2019-03-06
    • 2012-06-29
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多