【问题标题】:Selenium Webdriver c# without waiting for page to loadSelenium Webdriver c#无需等待页面加载
【发布时间】:2012-08-12 14:12:08
【问题描述】:

我有以下场景:

我想导航到一个页面。然后一出现就点击一个按钮(不要等待页面加载)。我不想等待初始页面加载,因为它需要很长时间。我的程序目前卡住了,直到页面加载然后单击按钮。

我基本上想导航到链接,然后无需等待页面并继续我的代码。

还有这个吗?

【问题讨论】:

    标签: c# selenium selenium-webdriver


    【解决方案1】:

    使用最新版本的 .NET 绑定,您可以设置页面加载超时。但是,您需要注意一些注意事项。首先,并非所有浏览器都实现了这一点。如果没记错的话,它应该适用于 IE 和 Firefox。其次,您需要捕获一个异常以使其正常工作,但这是可以做到的。

    // WARNING! Completely untested code written without
    // the benefit of an IDE!
    IWebDriver driver = new InternetExplorerDriver();
    driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(1));
    
    try
    {
        driver.Url = "http://your.long.loading.page.com";
    }
    catch (TimeoutException) 
    {
        // NOTE: In 2.26 or later, this will be WebDriverTimeoutException
    }
    
    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
    IWebElement element = wait.Until<IWebElement>((d) => 
    {
        return d.FindElement(By.Id("yourId"));
    }
    

    【讨论】:

      【解决方案2】:
      IWebDriver driver = new FirefoxDriver();
      driver.Url = "http://somedomain/url_that_delays_loading";
      WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
      IWebElement myDynamicElement = wait.Until<IWebElement>((d) =>
      {
          return d.FindElement(By.Id("someDynamicElement"));
      });
      

      它完全符合您的要求。它查询页面以查找元素,如果没有找到元素则捕获异常并在找到时返回一个元素。

      之后,您可以操作按钮而忽略页面无法加载的事实

      http://seleniumhq.org/docs/04_webdriver_advanced.html

      【讨论】:

        【解决方案3】:

        简短回答:不。

        长答案:默认情况下,Selenium 会尝试模拟真实用户 - 我知道这有点糟糕,尤其是在您需要在部署后部署后测试部署时... p>

        但是:如果真正的用户必须等待按钮出现,那么程序也必须这样做......

        顺便说一句:如果按钮真的出现在页面的第一个,你可以试试这个:

        1. 按 ID、xpath 搜索按钮...按您的方式搜索
        2. Catch 异常(我是 Java 人,所以不要问我如何)
        3. 如果出现错误,请稍等片刻(例如 200 毫秒),然后转到 1
        4. 如果没有,请点击按钮
        5. 如果经过一定时间(10 秒),循环也应该结束,如果是,则抛出异常

        如上所述:我选择的语言是 Java。在那里我可以做到。但我不知道如何用 C# 编写它

        【讨论】:

          猜你喜欢
          • 2012-07-12
          • 2012-07-07
          • 1970-01-01
          • 2019-01-31
          • 1970-01-01
          • 2018-06-14
          • 2018-08-13
          • 1970-01-01
          • 2012-05-30
          相关资源
          最近更新 更多