我有一个Selenium框架,自创建以来一直畅通无阻。我今天实现了Visual Studio团队资源管理器,在从远程分支拉出后,Intellisense开始对我大吼大叫,说我的一个命名空间不存在。它不喜欢的行是
using PageObjectModel.PageObjects.Maintenance;
和
var SettlementAccountReconciliations = new SettlementAccountReconciliation(_driver);
可在维护目录中找到SettlementAccountReconciliation。这是我的测试类的完整代码,它不喜欢目录:
using NLog.Internal;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using PageObjectModel.ControlObjects;
using PageObjectModel.PageObjects;
using PageObjectModel.PageObjects.Process;
using PageObjectModel.PageObjects.Status;
using System;
using PageObjectModel.PageObjects.Maintenance; // **LINE WITH MAINTENANCE UNDERLINED**
namespace PageObjectModel.Tests.TaskTesting
{
[TestFixture]
class JiraTaskTesting
{
private IWebDriver _driver;
[OneTimeSetUp]
public void SetUp()
{
_driver = new ChromeDriver();
DriverContext.Driver = _driver;
_driver.Manage().Window.Maximize();
var ConfigManager = new ConfigurationManager();
var Login = new Login(_driver);
Login.SignIn(ConfigManager.AppSettings["Username"], ConfigManager.AppSettings["Password"]);
}
[Test]
public void ReportNameStandardizationSettlementAccountReconciliations()
{
// **LINE WITH UNDERLINE**
var SettlementAccountReconciliations = new SettlementAccountReconciliation(_driver);
var Utilities = new Utilities(_driver);
var ReportPopup = SettlementAccountReconciliations.ExportReconciliationReport();
ReportPopup.StartDate.SetValue(DateTime.Now.ToString("MM/dd/yyyy"));
ReportPopup.EndDate.SetValue(DateTime.Now.ToString("MM/dd/yyyy"));
ReportPopup.ExportButton.Click();
Assert.IsTrue(Utilities.ValidateFilePresent("Settlement Account Reconciliation"));
Utilities.DeleteFile("Settlement Account Reconciliation");
}
此外,还有维护命名空间中的SettlementAccountReconciliation:
using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;
using OpenQA.Selenium.Support.UI;
using System;
namespace PageObjectModel.PageObjects.Maintenance
{
public class SettlementAccountReconciliation
{
private readonly IWebDriver _driver;
public SettlementAccountReconciliation(IWebDriver driver)
{
_driver = driver;
PageFactory.InitElements(driver, this);
var Utilities = new Utilities(driver);
string TradingUrl = Utilities.RefactorUrl("/SettlementAccountReconciliation");
driver.Navigate().GoToUrl(TradingUrl);
WebDriverWait Wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
try
{
Wait.Until(ExpectedConditions.ElementExists(By.XPath("//a[text()='Settlement Account Reconciliations']")));
Console.WriteLine("SettlementAccountReconciliation Page Label Found");
}
catch
{
Console.WriteLine("SettlementAccountReconciliation Page Label Not Found, timing out");
}
}
对于SettlementAccountReconciliation构造函数:
我的所有代码都采用Page Object Model格式,这就是我的文件结构的排列方式:
我知道这个问题很长,但要继续,测试运行得很好,解决方案就像魅力一样。我只需要弄清楚如何让文本编辑器不要认为我的代码存在问题。
Visual Studio告诉我"类型或命名空间名称'维护'在名称空间PageObjectModel.PageObjects'"中不存在,但它确实存在。
对此的任何帮助将不胜感激。
我修好了。
我不知道为什么会奏效,但确实如此。
我所做的只是将Maintenance文件夹重命名为Maintenance1,重新创建了Maintenance文件夹,并将SettlementAccountReconciliation类拖放到Maintenance文件夹中。
我猜测在Timbuktu的某个临时文件夹中存储了一些随机属性或设置,这些属性或设置是为创建新文件夹时重置或删除的现有文件夹存储的。
感谢所有花时间帮助我的人!
答案 0 :(得分:0)
我之前遇到过这个问题。检查项目目录中的文件和文件夹名称,项目属性中的名称空间和程序集名称,并检查,如果您已将项目添加为参考,则引用的路径与实际路径。我有一种强烈的感觉,如果你在任何时候重构过这一点,那么某些地方会有一些不一致的地方,你认为你引用的代码实际上并不是被引用的内容。
答案 1 :(得分:0)
我将Maintenance文件夹重命名为Maintenance1,重新创建了Maintenance文件夹,并将SettlementAccountReconciliation类拖放到Maintenance文件夹中,似乎解决了这个问题。
我猜测在Timbuktu的某个临时文件夹中存储了一些随机属性或设置,这些属性或设置是为创建新文件夹时重置或删除的现有文件夹存储的。