C# 如何使用XPath和参数获取值?

C# 如何使用XPath和参数获取值?,c#,selenium,xpath,selenium-webdriver,specflow,C#,Selenium,Xpath,Selenium Webdriver,Specflow,我正在使用c#、SpecFlow和Selenium进行BDD测试。 我想创建方法来单击按钮。此按钮的名称应取自参数(字符串p0),如下所示: 使用XPath,我只能做到这一点: driver.FindElement(By.XPath("//a[contains(.,'Get Started Now!')]")).Click(); 但我想做更多类似的事情: driver.FindElement(By.Name(p0)).Click() 或 FindElement(By.XPa

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

使用XPath,我只能做到这一点:

driver.FindElement(By.XPath("//a[contains(.,'Get Started Now!')]")).Click();
但我想做更多类似的事情:

driver.FindElement(By.Name(p0)).Click()

FindElement(By.XPath(//a[contains(,p0)])。单击()


我不知道如何使它工作:(

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

这应该起作用:

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

是否要在XPath查询中包含参数的字符串内容

这应该起作用:

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

可能已经晚了,但这种构建表达式的方式容易受到Xpath注入的影响,请查找Xpath预编译查询(准备好的语句brother:)


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

可能已经晚了,但这种构建表达式的方式容易受到Xpath注入的攻击,请查找Xpath预编译查询(prepared statement brother:))


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

没错。现在我明白了,这很容易:)非常感谢你@dudziakm为什么不呢?完成了。问了我15分钟后,我想是的,没错。现在我明白了,这很容易:)非常感谢你@dudziakm为什么不呢?完成了。提问后我必须等待15分钟,我认为你应该提供一个答案,用准备好的陈述来解决这个问题,而不仅仅是告诉他们该做什么。你应该提供一个答案,用准备好的陈述来解决这个问题,而不仅仅是告诉他们该做什么。