C#selenium webdriver chrome驱动程序等待模式窗口完全消失

C#selenium webdriver chrome驱动程序等待模式窗口完全消失,c#,selenium,webdriver,selenium-chromedriver,C#,Selenium,Webdriver,Selenium Chromedriver,我目前正在将chrome驱动程序与C#webdriver一起使用。我面临的问题之一是等待“存在”或“可见”在我的情况下不起作用,因为模式窗口需要一些时间才能消失。我得到一个错误: System.InvalidOperationException:未知错误:元素在点(x,x)处不可单击。其他元素将收到单击: 原因是,在我单击“确定/取消”后,模式背景仍会存在几秒钟,但背景后面的元素是可见的,并且可以单击以查看 那么,我如何“等待”直到模态背景完全消失,然后再尝试单击背景后面的内容呢?这不是本机ja

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

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

原因是,在我单击“确定/取消”后,模式背景仍会存在几秒钟,但背景后面的元素是可见的,并且可以单击以查看


那么,我如何“等待”直到模态背景完全消失,然后再尝试单击背景后面的内容呢?这不是本机javascript模式。这是一种别致的第三方模式,可在视图中滑入滑出,带有一个透明的“盖子”,防止在打开时单击任何其他内容。

您可以使用ExpectedConditions API,例如:

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

这将在1分钟内尝试,直到元素可单击且未发生时,它将引发异常。

您可以使用ExpectedConditions API,例如:

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

这将在1分钟内尝试,直到该元素可单击且未发生时,它将引发异常。

您是否尝试过
线程。睡眠(…)
?发布您的代码可能有助于更好地回答您Elenium已经有一个内置机制来强制浏览器等待。检查文档。那么什么是“第三方工具”?它是jQuery插件吗?你检查过对话框的
.displated
属性了吗?@AbuHamzah我在这里的某个地方读到,使用Thread.Sleep是不好的做法。我想知道为什么webdriver中没有一个简单的暂停()X秒?您是否尝试过
线程。睡眠(…)
?发布您的代码可能会有助于更好地回答您Elenium已经有一个内置机制来强制浏览器等待。检查文档。那么什么是“第三方工具”?它是jQuery插件吗?你检查过对话框的
.displated
属性了吗?@AbuHamzah我在这里的某个地方读到,使用Thread.Sleep是不好的做法。我想知道为什么webdriver中没有一个简单的暂停()X秒?