我进行了全面搜索,发现了多篇关于 Bodi 异常的帖子,但这些帖子都没有与 TestStack.White 相关,而且在我的情况下没有任何回复有效。
我正在使用以下内容:
- 规范流 2.4.0
- TestStack.White(0.13.3)
- 女士测试(1.4.0)
- 视觉工作室 2017(15.9.4)
我正在尝试使用现有接口将自动化元素转换为 TestStack.White UIItem
UIItemFactory itemFactory { get; set; }
ActionListener actionListener { get; set; }
public UIItemFactoryHelper(UIItemFactory itemFactory, ActionListener actionListener)
{
this.itemFactory = itemFactory;
this.actionListener = actionListener;
}
public virtual IUIItem CreateIUIItemFromAutoElement(AutomationElement automationElement)
{
var item = itemFactory.Create(automationElement, actionListener);
return item;
}
然后我像这样使用它
private DataGrid GetGrid(ParameterizedString Id, Window window = null)
{
var form = ScenarioContext.Current["activeForm"];
var tab = ScenarioContext.Current["activeTab"];
var parent = GetElementParent(form.ToString(), Id.parentLevel, tab.ToString());
if (window == null)
{
window = WindowHelper.GetWindow();
}
var parentUIItem = uiItemFactoryHelper.CreateIUIItemFromAutoElement(parent);
var element = parentUIItem.Get<DataGrid>(SearchCriteria.ByText("DataGrid"));
return element;
}
当我运行测试时,出现以下错误
消息:测试方法 SmokeTests.SmokeTestSpec.SmokeTestsFeature.EditsAreSaved 抛出异常:BoDi.ObjectContainerException:接口无法解析:TestStack.White.Factory.UIItemFactory
我尝试在 ScenarioHooks 中注册容器并在 Before Scenario 挂钩中注册接口。当我这样做时,我得到完全相同的东西。
class ScenarioHooks
{
IObjectContainer objectContainer;
public XmlHelper xmlHelper { get; set; }
public ScenarioHooks(XmlHelper xmlHelper, IObjectContainer objectContainer)
{
this.xmlHelper = xmlHelper;
this.objectContainer = objectContainer;
}
[BeforeScenario]
protected void RegisterInterfaces()
{
objectContainer.ResolveAll<UIItemFactory>();
}
}
我从事 SpecFlow 已经有很长时间了,但我总是被这种容器注入的东西所困扰。我已阅读文档并搜索了各个站点,但无法正常工作。
欢迎任何建议。我在这里完全被难住了。