Используйте переменную в XPath - PullRequest
0 голосов
/ 07 февраля 2019

Это работает, но я хочу использовать текст Группа 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; }

Возможно ли это сделать?

Ответы [ 3 ]

0 голосов
/ 07 февраля 2019

Когда вы устанавливаете переменную 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...']")]

как:

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 + "'
0 голосов
/ 07 февраля 2019

В строковой интерполяции $ должен быть перед строкой, а не переменной

[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";
0 голосов
/ 07 февраля 2019

Вы можете использовать String.Format с вставкой строки :

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; }

Надеюсь, это поможет вам!

...