C# 在XPath中使用变量

C# 在XPath中使用变量,c#,selenium,selenium-webdriver,xpath,xpath-1.0,C#,Selenium,Selenium Webdriver,Xpath,Xpath 1.0,这是可行的,但我想使用文本组1作为变量 代码试用: [FindsBy(How = How.XPath, Using = "(.//*[normalize-space(text()) and normalize-space(.)= 'Group 1'])[1]/ancestor::app-organization//*[normalize-space(text()) and normalize-space(.)='Create a new board...']/following::input[1

这是可行的,但我想使用文本组1作为变量

代码试用:

[FindsBy(How = How.XPath, Using = "(.//*[normalize-space(text()) and normalize-space(.)= 'Group 1'])[1]/ancestor::app-organization//*[normalize-space(text()) and normalize-space(.)='Create a new board...']/following::input[1]")]
public IWebElement BoardNameInputField { get; set; }
我试过了,但没有成功:

string boardName = "Group 1";

[FindsBy(How = How.XPath, Using = "(.//*[normalize-space(text()) and normalize-space(.)='${boardName}'])[1]/ancestor::app-organization//*[normalize-space(text()) and normalize-space(.)='Create a new board...']")]
public IWebElement CreateNewBoard { get; set; }
可以这样做吗?

您可以将String.Format用于:


希望这对你有帮助

将变量boardName设置为组1时,需要更改:

How.XPath, Using = "(.//*[normalize-space(text()) and normalize-space(.)='${boardName}'])[1]/ancestor::app-organization//*[normalize-space(text()) and normalize-space(.)='Create a new board...']")]
作为:

实际上,我们改变了:

normalize-space(.)='${boardName}'
致:


在字符串插值中,$应该在字符串之前,而不是变量之前

[FindsBy(How = How.XPath, Using = $"(.//*[normalize-space(text()) and normalize-space(.)='{boardName}'])[1]/ancestor::app-organization//*[normalize-space(text()) and normalize-space(.)='Create a new board...']")]
此外,boardName需要是静态的,才能在方法范围之外使用

static string boardName = "Group 1";

使用String.Format还是String concatenation更好这就是OP问题的答案!但是:字符串插值在编译时被转换为string.Format,因此我的答案是…:@MosheSlavin是真的,但看起来OP试图这么做,他使用了“${boardName}”。可能是重复的
normalize-space(.)='" + boardName + "'
[FindsBy(How = How.XPath, Using = $"(.//*[normalize-space(text()) and normalize-space(.)='{boardName}'])[1]/ancestor::app-organization//*[normalize-space(text()) and normalize-space(.)='Create a new board...']")]
static string boardName = "Group 1";