即使页面尚未加载且页面显示“错误:500服务器错误”,页面加载也不会引发错误

时间:2019-05-27 07:14:11

标签: c# selenium-webdriver

下面的代码用于检查页面是否已加载,即使页面出现“错误:500服务器错误,应用程序初始化错误”,它也不会返回任何错误。我们无法显示所请求的页面。”显示。

除了WaitForPageLoad之外,我没有尝试过其他在stackoverflow上找到的东西。

public static void WaitForPageLoad(IWebwebDriver webwebDriver, int WaitTime = 12)
{
    string pageStatus = string.Empty;
    OpenQA.Selenium.Support.UI.WebwebDriverWait wait = new OpenQA.Selenium.Support.UI.WebwebDriverWait(webDriver, TimeSpan.FromSeconds(WaitTime));
        wait.Until(w =>
        {
        try
        {
        pageStatus = ((IJavaScriptExecutor)webDriver).ExecuteScript(@"return document.readyState").ToString();
        }
        catch (NoSuchWindowException)
        {
        webDriver.SwitchTo().Window(webDriver.WindowHandles.Last());
        }
        return (pageStatus.Equals("complete", StringComparison.InvariantCultureIgnoreCase) || pageStatus.Equals("loaded", StringComparison.InvariantCultureIgnoreCase));
        });
}

当页面有错误或根本没有加载时,我期望它会引发错误。在某些情况下,页面的一部分t loaded but still returns page state as 'complete'. Kindly check and let me know if this can be handled. Am even okay to check out for third party APIs like fiddler if there是很好的解决方案。

1 个答案:

答案 0 :(得分:0)

首先没有document.readypageStatus,没有document.readyState,所以我建议您重新考虑页面加载完成逻辑。

如果您的应用程序是使用AJAX技术(而不是功能)构建的,则可以使用Explicit Wait功能,例如:

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(12));
IWebElement element = wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("someid")));

这样,Selenium将等待someid中带有>>> class baselessmeta(type): ... def __new__(metaclass, class_name, bases, classdict): ... return type.__new__( ... metaclass, ... class_name, ... (), # I can just ignore all the base ... {} ... ) ... >>> class Baseless(int, metaclass=baselessmeta): ... # imaginary print(__bases__, __base__) ... ... ... >>> Baseless.__bases__ (<class 'object'>,) >>> Baseless.__base__ <class 'object'> >>> 的{​​{3}}的元素12秒钟,并在找到后立即进行。如果该元素不会在12秒内显示-您将获得id attribute