如何使用XPath获取值并使用Parameter?

时间:2014-11-15 19:03:25

标签: c# selenium xpath selenium-webdriver specflow

我正在使用c#,SpecFlow和Selenium进行BDD测试。 我想创建单击按钮的方法。此按钮的名称应取自参数(字符串p0),如下所示:

    [Given(@"I click (.*) button")]
    public void GivenIClickButton(string p0)
    {
        //Find button p0 and Click on it
    }

使用XPath我只能这样做:

driver.FindElement(By.XPath("//a[contains(.,'Get Started Now!')]")).Click();

但我想做更像这样的事情:

  

driver.FindElement(By.Name(P0))点击();

     

OR

     

driver.FindElement(By.XPath( “//一个[含有(,P0)。]”))点击();

我不知道如何让它发挥作用:(

2 个答案:

答案 0 :(得分:2)

您想在XPath查询中包含参数的字符串内容吗?

这应该有效:

var xPathQuery = String.Format("//a[contains(.,'{0}')]", p0);
driver.FindElement(By.XPath(xPathQuery)).Click();

答案 1 :(得分:1)

可能会迟到,但构建表达式的方式很容易受到Xpath注入,查找Xpath预编译查询(预处理语句兄弟:))。

它们为您提供了安全性和性能优势。