C# 测试脚本未在特定页面中等待

C# 测试脚本未在特定页面中等待,c#,selenium,timeout,C#,Selenium,Timeout,//此行不工作,测试脚本未在特定页面等待driver.Manage().Timeouts().ImplicitWait=TimeSpan.FromSeconds(5)您应该使用显式等待而不是隐式等待。试试这个: driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5); driver.FindElement(By.XPath(".//*[@class = 'search-box']")).SendKey

//此行不工作,测试脚本未在特定页面等待driver.Manage().Timeouts().ImplicitWait=TimeSpan.FromSeconds(5)

您应该使用显式等待而不是隐式等待。试试这个:

driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
driver.FindElement(By.XPath(".//*[@class = 'search-box']")).SendKeys("Samsung");
Console.WriteLine("confirm!");

driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
driver.FindElement(By.XPath(".//*[@class = 'search-icon']")).Click();
Console.WriteLine("confirm!");

driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
driver.FindElement(By.ClassName("fvrt-btn")).Click();
Console.WriteLine("confirm!");

driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
driver.FindElement(By.XPath(".//*[@class = 'link-text']/div/div/div/div[a]/div/div/div")).Click();
Console.WriteLine("confirm!");

driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
driver.FindElement(By.ClassName("ufvrt-btn")).Click();
Console.WriteLine("confirm!");
其中
element
是元素定位器,例如代码第二行的
By.XPath(“./*[@class='search box']”)


等待超时通常设置为30秒,以允许完全加载页面。

ImplicitWait
用于等待x秒,以便在当前页面上找到元素。您正在执行
。单击多个元素上的
,其中一些元素可能会导航到其他页面。因此,简而言之,
ImplicitWait
不会阻止浏览器导航。在执行某些代码块之前,您可能需要等待页面加载,您可以在此处阅读有关等待页面加载的更多信息。我将检查
ImplicitWait
应在代码中仅定义一次,不是每次你想找到一个元素的时候。您将
ImplicitWait
ExplicitWait
@JD2775的用法混合使用,有时需要更改隐式等待时间,但在极少数情况下是这样。一般来说,隐式等待在项目开始时定义一次是正确的。
WebDriverWait wait;
wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(element));