在移动到另一个页面之前,如何在selenium中等待页面加载?(C#)

在移动到另一个页面之前,如何在selenium中等待页面加载?(C#),c#,unit-testing,selenium,selenium-webdriver,selenium-chromedriver,C#,Unit Testing,Selenium,Selenium Webdriver,Selenium Chromedriver,我对selenium有点陌生,基本上,我要做的是登录到website1,等待页面完全加载。然后转到网站2。 我不想使用Thread.Sleep(),您知道这会使我的UI没有响应。 我如何使用硒和c#来制作呢 我找到了一个使用ExpectedConditions.ElementIsVisible的答案,但不幸的是,我在新的selenium版本中找不到ExpectedConditions 基本上,作为验证过程的一部分,您不会等待页面加载,而是等待验证操作的最终结果,包括: 元素可见 可选择的元素

我对selenium有点陌生,基本上,我要做的是登录到website1,等待页面完全加载。然后转到网站2。 我不想使用
Thread.Sleep()
,您知道这会使我的UI没有响应。 我如何使用硒和c#来制作呢


我找到了一个使用ExpectedConditions.ElementIsVisible的答案,但不幸的是,我在新的selenium版本中找不到ExpectedConditions

基本上,作为验证过程的一部分,您不会等待页面加载,而是等待验证操作的最终结果,包括:

  • 元素可见
  • 可选择的
    元素
  • 一些
    texttobepresentElement
  • 标题包含
  • url包含
  • 因此,您的自动化脚本将验证上述任何验证点

    根据does对该方法的说明如下:

ExpectedConditions.ElementIsVisible
方法 检查元素是否存在于页面的DOM中且可见的期望。可见性意味着不仅显示图元,而且其高度和宽度都大于0

  • 命名空间:
    OpenQA.Selenium.Support.UI
  • 程序集:
    WebDriver.Support(在WebDriver.Support.dll中)版本:3.1.0
  • 参数(定位器):
    • 类型:
      OpenQA.Selenium.By
    • 返回值:类型:
      Func
截图:


基本上,作为验证过程的一部分,您不会等待页面加载,而是等待验证操作的最终结果,包括:

  • 元素可见
  • 可选择的
    元素
  • 一些
    texttobepresentElement
  • 标题包含
  • url包含
  • 因此,您的自动化脚本将验证上述任何验证点

    根据does对该方法的说明如下:

ExpectedConditions.ElementIsVisible
方法 检查元素是否存在于页面的DOM中且可见的期望。可见性意味着不仅显示图元,而且其高度和宽度都大于0

  • 命名空间:
    OpenQA.Selenium.Support.UI
  • 程序集:
    WebDriver.Support(在WebDriver.Support.dll中)版本:3.1.0
  • 参数(定位器):
    • 类型:
      OpenQA.Selenium.By
    • 返回值:类型:
      Func
截图:


正如DebanjanB所说,我们无需等待页面加载完成。相反,您可以尝试以下方法:

MyWebDriver.Navigate().GoToUrl(url2);
WebDriverWait wait = new WebDriverWait(dr, TimeSpan.FromMinutes(5));
element = wait.Until(ExpectedConditions.ElementToBeClickable(dr.FindElement(By.Name("User_Name"))));

正如DebanjanB所说,我们不需要等待页面加载完成。相反,您可以尝试以下方法:

MyWebDriver.Navigate().GoToUrl(url2);
WebDriverWait wait = new WebDriverWait(dr, TimeSpan.FromMinutes(5));
element = wait.Until(ExpectedConditions.ElementToBeClickable(dr.FindElement(By.Name("User_Name"))));
上面的代码将等待页面加载60秒,如果页面已准备就绪(60秒内),则返回true;如果页面未准备就绪(60秒后),则返回false

上面的代码将等待页面加载60秒,如果页面已准备就绪(60秒内),则返回true;如果页面未准备就绪(60秒后),则返回false

bool wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(60)).Until(d => ((IJavaScriptExecutor)d).ExecuteScript("return document.readyState").Equals("complete")); 

if(wait == true)
{
    //Your code
}