c# - 测试脚本不在特定页面中等待
问题描述
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!");
// 此行无效,测试脚本未在特定页面等待。driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
解决方案
您应该使用显式等待而不是隐式等待。尝试这个:
WebDriverWait wait;
wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(element));
元素定位器在哪里element
,例如By.XPath(".//*[@class = 'search-box']")
在代码的第二行。
等待超时通常设置为 30 秒,以允许页面完全加载。
推荐阅读
- sql - 如果未设置 WHERE 子句,则忽略 MS ACCESS 查询中的列
- javascript - 我无法运行输入数字的最小值和最大值
- indexing - (Cosmos DB) 复合索引中的系统函数是范围过滤器吗?
- angular - 那里有在 Angular 较新版本上添加交互式 D3 js v6 图表的任何实用指南
- sql - ORDER BY 的意外结果
- redis - Redis 集群裂脑场景
- laravel - Laravel eloquent 无法输入字段链接具有某个表的外键的数据
- ios - UIBezierPath 变色自定义
- influxdb - InfluxDB Flux 当前值减去 90 天前的值
- c++ - 当在另一个线程上完成工作时,有没有办法保护智能指针在一个线程上被释放?