我想做这样的事情(注意 IWebDriver 而不是典型的字符串)
[Given(@"I select ""(.*)"" option")]
public void GivenInISelectOption(IWebDriver p0)
{
MainMenuPage.SelectOption(p0);
}
像这样成为 MainMenuClass:
class MainMenuPage
{
//spans
public static IWebElement SetupMenu
{ get { return Configuration.driver.FindElement(By.XPath(".//span[@id='Setup_navItem']")); } }
public static void SelectOption (IWebElement element)
{
element.Click();
}
}
使用情况应该是这样的:
And I select "SetupMenu" option
问题:是否可以使用步骤参数转换让步骤定义接受 IWebElement 而不是字符串?
最佳答案
我不能说它是否可行,但无论如何我都不会建议。但是,这里有一种方法可以解决您的问题:
[Given(@"I select ""(.*)"" option")]
public void GivenInISelectOption(string p0)
{
if(p0.Equals("SetupMenu"){
MainMenuPage.SelectOption(MainMenuPage.SetupMenu);
}
}
这样你仍然可以从 stepdef 中调用你需要的选项
另一种更简单的方法是:
[Given(@"I select ""(.*)"" option")]
public void GivenInISelectOption(string p0)
{
if(p0.Equals("SetupMenu"){
MainMenuPage.SetupMenu.Click();
}
}
关于c# - Specflow:通过步骤参数转换传递 IWebElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30329881/