c# - 如何使用 C# 增加 Selenium webdriver 中的代码执行时间限制
问题描述
网站在向其请求数据时需要时间来加载。
如果网站在 60 秒内加载,则一切正常。超过那个时间,它把我扔到错误部分。
实际上,这段代码只执行了 60 个部分。
this.driver.FindElement(By.CssSelector("#btnLogin")).Click();
如何设置驱动程序等待这段代码完全执行?
谢谢
解决方案
有很多选项可以设置页面加载超时。
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(90);
或者
driver.Manage().Timeouts().ImplicitWait.Add(System.TimeSpan.FromSeconds(90));
或者
driver.Manage().Timeouts().PageLoad.Add(System.TimeSpan.FromSeconds(90));
或者
driver.Manage().Timeouts().AsynchronousJavaScript.Add(90));
更新-1
您可以尝试在新页面上等待元素的存在(页面加载后出现页面)。编写一个自定义方法来查找具有超时的元素,如下所示
public static class WebDriverExtensions
{
public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds)
{
if (timeoutInSeconds > 0)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(driver => driver.FindElement(by));
}
return driver.FindElement(by);
}
}
上述方法的用法:
driver.FindElement(By.CssSelector("#btnLogin"), 90);
推荐阅读
- excel - 将验证列表复制到新书时如何保留另一张纸上的验证列表
- reactjs - 尝试使用 UseEffect 在 react.js 中创建倒计时(日:小时:分钟:秒)
- python - Pandas:如何在 Dataframe 中添加表示 2 个属性交集的列
- api - 在 DocuSign 中,信封状态报告(在控制台 -> 报告部分)我们得到一个字段总页数;如何通过 DocuSign API 获得相同的?
- node.js - 如何从前端保存和发送 JWT 令牌
- oauth-2.0 - 用于身份验证的 Onedrive/Azure API 代码流将我发送到我的重定向 url,但没有给我附加到 url 的代码
- php - Docker 上的 Nginx 仅提供欢迎页面
- r - 如何在绘图中添加线条和阴影
- python - Python / Pyspark - 正确的方法链接顺序规则
- python - /searchbar/ 处的索引错误