c# - Specflow:通过步骤参数转换传递 IWebElement

标签 c# selenium-webdriver specflow

我想做这样的事情(注意 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/

相关文章:

c# - 将 TIFF 转换为 JPG 格式

python - Selenium 无法在 Internet Explorer 9 中切换到 TinyMCE iframe

java - Selenium 可以截取 JUnit 测试失败的屏幕截图吗?

nunit - 并行运行 Specflow 场景

c# - 将 block 与存储过程一起使用

c# - 我该如何清理这个 lambda?

c# - 将自定义动词添加到 ToolStrip 设计器,而无需重新实现 ToolStripDesigner

c# - 为什么 Selenium Firefox 驱动程序认为当父级溢出 :hidden? 时我的模态不显示

c# - 使用 Specflow 和 xUnit 2 (ITestOutputHelper) 进行日志记录

jenkins - 使用 Jenkins 和 NUnit 时,如何使未记录的 SpecFlow 测试失败(不会标记为不确定)?