gpt4 book ai didi

c# - 使用 Webdriver 使用 Selenium 超时的最佳方法是什么

转载 作者:行者123 更新时间:2023-11-30 19:29:32 25 4
gpt4 key购买 nike

我遇到了一个问题。我的网页有一个 DropDownList 控件。一旦 DropDownList 值发生变化(通过选择不同的值),页面就会刷新并呈现内容。

然后我必须在它运行之前使用 Thread.Sleep(2000);FindElement

我的问题:WAITING页面加载的最佳方式是什么?

我的代码中有太多 Thread.Sleep(2000) 的实例,以至于我开始认为这不是解决问题的最佳方法。

这是我的代码:

[TestInitialize()]
public void Setup()
{
if (BaseIntegrationTest.browserType.Equals(BaseIntegrationTest.IE))
{
driver = new InternetExplorerDriver();
}
else if (BaseIntegrationTest.browserType.Equals(BaseIntegrationTest.CHROME))
{
//driver = new ChromeDriver();
}
else if (BaseIntegrationTest.browserType.Equals(BaseIntegrationTest.FIREFOX))
{
driver = new FirefoxDriver();
}
}

第二部分:

[TestMethod]
public void testVerifyData()
{
// ...................
// ...................
driver.FindElement(By.XPath("//*[@id='ctl00_NavigationControl1_lnke']")).Click();

Thread.Sleep(2000);

//select from the dropdownlist.
IWebElement catagory = driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_Filter"));
SelectElement selectCatagory = new SelectElement(catagory);
selectCatagory.SelectByText("Employee");

Thread.Sleep(2000);
// ...................
// ...................
}

最佳答案

Thread.Sleep() 是一种非常令人沮丧的实现等待的方式

selenium 文档中概述了此代码 http://seleniumhq.org/docs/04_webdriver_advanced.html

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement category = wait.Until<IWebElement>((d) =>
{
return d.FindElement(By.Id("ctl00_ContentPlaceHolder1_Filter"));
});

这是一个显式等待的例子,selenium 在找到您的元素之前不会执行任何操作

隐式等待的一个例子是:

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
IWebElement category = driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_Filter"));

在隐式等待中,驱动程序将等待给定的时间并轮询 DOM 以查找任何不存在的元素。

编辑

public WaitForElement(string el_id)
{
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement category = wait.Until<IWebElement>((d) =>
{
return d.FindElement(By.Id(el_id));
});
}

关于c# - 使用 Webdriver 使用 Selenium 超时的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11958701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com