在移动到另一个页面之前,如何在selenium中等待页面加载?(C#)
我对selenium有点陌生,基本上,我要做的是登录到website1,等待页面完全加载。然后转到网站2。 我不想使用在移动到另一个页面之前,如何在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 基本上,作为验证过程的一部分,您不会等待页面加载,而是等待验证操作的最终结果,包括: 元素可见 可选择的元素
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
}