Selenium Webdriver c#无需等待页面加载

我有以下情况:

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

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

无论如何围绕这个?

使用最新版本的.NET绑定,您可以设置页面加载超时。 但是,您需要注意一些警告。 首先,并非所有浏览器都实现了这一点。 如果内存服务,它应该适用于IE和Firefox。 其次,您需要捕获exception以使其正常工作,但可以完成。

// 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((d) => { return d.FindElement(By.Id("yourId")); } 
 IWebDriver driver = new FirefoxDriver(); driver.Url = "http://somedomain/url_that_delays_loading"; WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); IWebElement myDynamicElement = wait.Until((d) => { return d.FindElement(By.Id("someDynamicElement")); }); 

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

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

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

简答:没有。

答案很长:默认情况下Selenium试图模拟真实用户 – 我知道它有点糟糕,特别是有时你需要在部署后部署后测试部署…

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

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

  1. 按ID,xpath搜索按钮……你的方式
  2. 抓住exception(我是Java家伙,所以不要问我怎么样)
  3. 如果有错误,请等待很短的时间(例如200毫秒),然后转到1
  4. 如果没有,请单击按钮
  5. 如果经过一定时间(10s),循环也应结束,如果是,则抛出exception

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