在 XPath 中使用变量
Use variable in XPath
这是有效的,但我想使用文本 组 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
与 inserting-a-string 一起使用:
string boardName = "Group 1";
[FindsBy(How = How.XPath, Using = String.Format("(.//*[normalize-space(text()) and normalize-space(.)='{0}'])[1]/ancestor::app-organization//*[normalize-space(text()) and normalize-space(.)='Create a new board...'])", boardName)]
public IWebElement CreateNewBoard { get; set; }
希望对您有所帮助!
当您将变量 boardName 设置为 Group 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...']")]
如:
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}'
至:
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";
这是有效的,但我想使用文本 组 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
与 inserting-a-string 一起使用:
string boardName = "Group 1";
[FindsBy(How = How.XPath, Using = String.Format("(.//*[normalize-space(text()) and normalize-space(.)='{0}'])[1]/ancestor::app-organization//*[normalize-space(text()) and normalize-space(.)='Create a new board...'])", boardName)]
public IWebElement CreateNewBoard { get; set; }
希望对您有所帮助!
当您将变量 boardName 设置为 Group 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...']")]
如:
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}'
至:
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";