Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用WebDriver更改Visual Studio中单个测试类的配置类属性_C#_Visual Studio_Selenium Webdriver - Fatal编程技术网

C# 如何使用WebDriver更改Visual Studio中单个测试类的配置类属性

C# 如何使用WebDriver更改Visual Studio中单个测试类的配置类属性,c#,visual-studio,selenium-webdriver,C#,Visual Studio,Selenium Webdriver,我正在使用SeleniumWebDriver在VisualStudio中为web门户应用程序开发自动化测试。我目前的问题是,一些测试在一个浏览器中失败,但在另一个浏览器中没有 我相信失败的测试是由于一个浏览器中的页面比另一个浏览器花费的时间长得多。我想在此浏览器中调整这些测试的超时设置,而不更改其他浏览器相同测试的超时设置,但我不确定如何调整 我有一个助手类Configuration,它存储诸如默认超时值之类的常量 public static TimeSpan TimeoutFor

我正在使用SeleniumWebDriver在VisualStudio中为web门户应用程序开发自动化测试。我目前的问题是,一些测试在一个浏览器中失败,但在另一个浏览器中没有

我相信失败的测试是由于一个浏览器中的页面比另一个浏览器花费的时间长得多。我想在此浏览器中调整这些测试的超时设置,而不更改其他浏览器相同测试的超时设置,但我不确定如何调整

我有一个助手类Configuration,它存储诸如默认超时值之类的常量

       public static TimeSpan TimeoutForLocalChange { get; set; } = TimeSpan.FromSeconds(1);

       public static TimeSpan TimeoutForPageLoad { get; set; } = TimeSpan.FromSeconds(5);
Pages文件夹包含每个页面的类以及站点页面的公共方面的基本页面类。我的默认WebDriverWait是在基页类中定义的

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; }
“测试”文件夹包含站点每个区域的测试,测试以抽象类编写,该抽象类与浏览器无关。每个浏览器使用一个单独的类来实际运行测试


我不知道如何最好地调整我的WebDriverWaits,使其只适用于一个浏览器。这可能是一件非常基本的事情,但到目前为止,我还没有找到有效的适用说明/示例

我想我不会只为一个浏览器更改它,我会为所有浏览器更改默认值。超时只是Selenium在某些条件为真之前等待的最长时间。例如,如果一个页面在Chrome中加载需要3秒,而在IE中加载需要10秒,并且您将超时设置为15秒,那么该页面在Chrome中加载只需要3秒,在IE中加载只需要10秒。这不会使测试变得更慢。现在,如果有一天Chrome中的测试需要10秒,那么如果更改是全局的,它不会超时,如果更改是IE特定的


而且,1s的等待时间非常短。我至少会坚持几秒钟。我通常使用大约10秒来加载页面。记住,这不需要10秒。。。如果在500毫秒内加载,脚本将继续。这只是脚本等待的最长时间。

感谢您的反馈-这是一个很好的观点,一般来说,它不应使成功的测试运行更长时间。不过,我很好奇,对于学习来说,我是否应该更改某些测试(或其他类似的配置元素)的超时,您对如何实现这一点有什么建议吗?我使用页面对象模型,目前只为每个页面设置了唯一的每个页面等待超时。有时我想知道我是否应该说一个
slowPageLoadTimeout
和一个
fastPageLoadTimeout
全局并使用它们,这样我就可以一次全部更改它们,但我真的没有必要这么做。我想对于大多数页面来说,10秒是一个很好的超时时间,我有一些页面加载速度较慢,所以它们稍微高一点。如果我要这样做,我会创建一些全局
int
变量并以秒为单位存储超时。然后根据需要在
WebDriverWait
声明中使用它们。我不认为我会采取创建一个全局
WebDriverWait
变量的方法,等等。这并不是说它不好,只是看起来“很重”。事实上,如果你把这些东西放在你的basepage类中,它会被每个页面实例化。。。这意味着您将拥有每个变量的多个副本。我想这就是为什么我会在一些
static
Utils或其他类中将它们作为
int
s。