Selenium c#:是否有一种方法可以在继续之前等待加载覆盖隐藏?



所以我在完成任务后创建了不同的显式等待,如更新联系人信息,提交表单等,因为每次我这样做时,加载覆盖将弹出几秒钟。我刚刚意识到每个页面上的加载代码都是一样的。而不是等待结果显示在页面上或其他东西出现,我只是想等待这个加载覆盖隐藏。是否有可能编写一些可重用的代码,等待这个覆盖隐藏之前进行?

叠加代码:

<div id="progress" style="display: none;" role="status" aria-hidden="true">
<div id="divOverlay"></div>
<div id="divLoading">
<img id="loading" src="/loading.gif" />
</div>
</div>

当加载显示出现时,div属性将变为:

<div id="progress" style="display: block;" role="status" aria-hidden="false">
<div id="divOverlay"></div>
<div id="divLoading">
<img id="loading" src="/loading.gif" />
</div>
</div>

如果你的。net版本支持ExpectedConditions,你可以直接使用下面的解决方案

var wait = new WebDriverWait(Driver.Instance, TimeSpan.FromSeconds(10));
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.XPath("//div[@id='progress']")));

如果不支持,则可以使用下面的解决方案。

//returns as soon as element is not visible, or throws WebDriverTimeoutException
protected void WaitUntilElementNotVisible(By searchElementBy, int timeoutInSeconds)
{
new WebDriverWait(_driver, TimeSpan.FromSeconds(timeoutInSeconds))
.Until(drv => !IsElementVisible(searchElementBy));
}
private bool IsElementVisible(By searchElementBy)
{
try
{
return _driver.FindElement(searchElementBy).Displayed;
}
catch (NoSuchElementException)
{
return false;
}
}

,并像这样使用:

WaitUntilElementNotVisible(By.Id("progress"), 10);

相关内容

  • 没有找到相关文章

最新更新