我创建了一个 App.config 文件来存储 url,而不是在整个单元测试中对它们进行硬编码,因此如果 url 发生变化,我只有一个地方需要更改它们。这是我的 App.config(出于发布目的而更改了 url) ):
<configuration>
<appSettings>
<add key="Home" value="https://home.com"/>
<add key="AnotherPage" value="https://anotherpage.com"/>
</appSettings>
</configuration>
在我的测试中,我尝试使用这样的网址:
using Xunit;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using System;
using System.IO;
using System.Configuration;
namespace Homepage.Tests.UI.Tests
{
public class HomePageShould
{
[Fact]
public static void Open()
{
var url = ConfigurationManager.AppSettings["Home"];
using IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl(url);
}
}
}
我收到此错误:
结果消息:System.ArgumentNullException:参数“url”不能为空。 (参数“值”)
我也尝试过这个:var _homeUrl = ConfigurationManager.AppSettings.Get("Home");
并得到同样的错误。
我做错了什么以及如何让它工作?
这不起作用,因为创建新项目时会自动生成 App.config 文件。最有可能的是,您创建了错误类型的项目。
您可以在此处找到有关配置和 Selenium 的更多信息。
附注我会将其作为评论发布,但我的声誉是 <50. Thank you for understanding!
App.config 文件应该在创建项目时自动创建。因此,如果您这样做,也许您不需要手动创建它。可能是手动创建此文件可能会出现找不到该键下的值的问题。除此之外,您的代码看起来可以获取该值。
如果您手动创建了 App.config 文件,则可以执行以下任一步骤:
添加对 System.Configuration 的引用:
通过 NuGet 添加 System.Configuration.ConfigurationManager:
现在您将能够通过执行此行来访问 App.config 文件中的值 - ConfigurationManager.AppSettings["key"];
来源:ChatGPT