我正在使用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)。]”))点击();
我不知道如何让它发挥作用:(
答案 0 :(得分:2)
您想在XPath查询中包含参数的字符串内容吗?
这应该有效:
var xPathQuery = String.Format("//a[contains(.,'{0}')]", p0);
driver.FindElement(By.XPath(xPathQuery)).Click();
答案 1 :(得分:1)
可能会迟到,但构建表达式的方式很容易受到Xpath注入,查找Xpath预编译查询(预处理语句兄弟:))。
它们为您提供了安全性和性能优势。