如何检查页面是否已加载Selenium

时间:2013-12-14 00:13:47

标签: c# selenium selenium-webdriver

我正在寻找一种方法来检查页面是否已使用Selenium加载。所以基本上url指向正确的地址(在chrome中,浏览器显示如下内容): enter image description here

我使用以下代码:

var driver = new FirefoxDriver();
driver.Url = "SomeUrl";

目前我正在将标题与“SomeUrl不可用”进行比较,如果匹配,则表示该页面无法加载。

但是有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

如果您知道控件ID /或链接或/ Class将出现在您的页面上,我建议您这样做。然后等待该元素在屏幕上显示一段规定的时间。

我出现了该元素,然后您的下一行代码将被执行

这是m方法的简单版本。您可以根据需要使其更具动态性。

    /// <summary>
    /// WaitForElementOnPage() method waits a passed number of seconds for the existence
    /// of a passed IWebElement object. If the object is found the method return an IWebElement of the object
    /// If the object is not found in the passed number of seconds, the method returns a null IWebElement
    /// </summary>

    public IWebElement WaitForElementOnPage(string controlID, int waitTime)
    {
        IWebElement element = null;
        IWebElement elementFound = null;

        try
        {
            WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(waitTime));

            Thread.Sleep(3000);

            elementFound = wait.Until<IWebElement>((d) =>
            {

                        element = d.FindElement(By.Id(controlID));
                        break;



                return element;

            });
        }
        catch (Exception ex)
        {                        
            Log.Error(ex);
            elementFound = null;
        }

        return elementFound ;
    }

答案 1 :(得分:0)

我个人尝试在页面上找到bodyframeset元素。

根据我使用chlenium和chromedriver的经验,页面内容有时不显示,我需要运行webdriver.refresh() 1-2次。它不会一直发生,但我在一台机器上运行了大量的chrome实例,这种方法现在是最有效的方法来避免这种情况。

所以我尝试找到bodyframeset元素并在我放弃之前重新加载几次。

此解决方案的优势还在于,如果Chrome将来更改其消息,它也可以使用。它也可以与其他浏览器一起使用。