我正在开发使用Selenium Webdriver在Visual Studio中为Web门户应用程序开发自动化测试。我目前的问题是一些测试在一个浏览器中失败而在另一个浏览器中失败。
我认为失败的测试是由于网页在一个浏览器中占用的时间明显长于另一个浏览器。我想在此浏览器中调整这些测试的超时设置,而不更改同一测试的其他浏览器的超时设置,但我不确定如何。
我有一个辅助类Configuration,它存储常量,例如我的默认超时值。
public static TimeSpan TimeoutForLocalChange { get; set; } = TimeSpan.FromSeconds(1);
public static TimeSpan TimeoutForPageLoad { get; set; } = TimeSpan.FromSeconds(5);
Pages文件夹包含每个页面的类以及网站页面常见方面的基页类。我的默认WebDriverWaits在基页类中定义。
public PageBase(IWebDriver webDriver)
{
this.WebDriver = webDriver;
this.WaitForDom = new WebDriverWait(this.WebDriver, Configuration.TimeoutForLocalChange);
this.WaitForAjax = new WebDriverWait(this.WebDriver, Configuration.TimeoutForPageLoad);
}
public WebDriverWait WaitForDom { get; }
public WebDriverWait WaitForAjax { get; }
Tests文件夹包含对站点每个区域的测试,测试用浏览器无关的Abstract类编写。每个浏览器的单独类用于实际运行测试。
我不确定如何只为一个浏览器调整我的WebDriverWaits。这可能是一个非常基本的东西,但到目前为止,我还没有能够找到适用的指令/示例。
答案 0 :(得分:0)
我想我不会只为一个浏览器更改它,我会改变所有的默认值。超时只是Selenium在某些条件为真之前等待的最长时间。例如,如果页面在Chrome中加载需要3秒钟,而在IE中加载需要10秒钟,并且您将超时设置为15秒,则在Chrome中加载页面仍然只需3秒钟,在IE中加载10页面。它不会使测试变得更慢。现在,如果有一天Chrome中的测试需要10秒钟,那么如果更改是全局的,那么它将超时,如果它是特定于IE的话。
此外,1s是真正短暂的等待时间。我至少会做几秒钟。我通常使用大约10秒来加载页面。请记住,它不会花费10秒......如果它在500毫秒内加载,脚本将继续。这只是脚本等待的最长时间。