Использование значения из переменной в XPath

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
Здравствуйте. Хочу понять возможно ли использовать в XPath переменную из проекта.

Есть строка поиска XPatch //*[@id="listBlockPanelDetailedUserGroupsListBlock"]//a[contains(@href,'578834787')]

Есть задача подставлять вместо цифр 578834787 значение из переменной проекта. Подскажите, пожалуйста, как это сделать ?
 

Valandersi

Client
Регистрация
19.01.2015
Сообщения
1 923
Благодарностей
1 123
Баллы
113
На c# можно. Создайте перемененную и поместите в свой xpath, уже несколько раз спрашивали на форуме
 
  • Спасибо
Реакции: Deisler

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
На c# можно. Создайте перемененную и поместите в свой xpath, уже несколько раз спрашивали на форуме
Вы предлагаете один из вариантов решения или вы говорите что в кубике без C# это сделать невозможно ?
 

Valandersi

Client
Регистрация
19.01.2015
Сообщения
1 923
Благодарностей
1 123
Баллы
113
Вы предлагаете один из вариантов решения или вы говорите что в кубике без C# это сделать невозможно ?
C#:
var num = project.Variables["num"].Value;
var xpath = instance.ActiveTab.FindElementsByXPath("//*[@id="listBlockPanelDetailedUserGroupsListBlock"]//a[contains(@href,'"+ num +"')]");
попробуйте такой пример
 
  • Спасибо
Реакции: Fedor5588

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
C#:
var num = project.Variables["num"].Value;
var xpath = instance.ActiveTab.FindElementsByXPath("//*[@id="listBlockPanelDetailedUserGroupsListBlock"]//a[contains(@href,'"+ num +"')]");
попробуйте такой пример
56973

к сожалению этот вариант выдает массу ошибок. А мне, как человеку не разбирающемуся в C# с этим точно не разобраться
 

Valandersi

Client
Регистрация
19.01.2015
Сообщения
1 923
Благодарностей
1 123
Баллы
113
Посмотреть вложение 56973
к сожалению этот вариант выдает массу ошибок. А мне, как человеку не разбирающемуся в C# с этим точно не разобраться
C#:
var num = project.Variables["num"].Value;
var xpath = instance.ActiveTab.FindElementsByXPath("//*[@id='listBlockPanelDetailedUserGroupsListBlock']//a[contains(@href,'"+ num +"')]");
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
C#:
var num = project.Variables["num"].Value;
var xpath = instance.ActiveTab.FindElementsByXPath("//*[@id='listBlockPanelDetailedUserGroupsListBlock']//a[contains(@href,'"+ num +"')]");
Этот вариант ошибок не вызывает, но как кликнуть на найденный элемент ? код ниже не кликает на нужном элементе, хотя по идеи должен
C#:
var num = project.Variables["num"].Value;
var xpath = instance.ActiveTab.FindElementsByXPath("//*[@id='listBlockPanelDetailedUserGroupsListBlock']//a[contains(@href,'"+ num +"')]");
instance.ActiveTab.FullEmulationMouseClick("xpath", "click");
 

Valandersi

Client
Регистрация
19.01.2015
Сообщения
1 923
Благодарностей
1 123
Баллы
113
а в переменной num у вас число правильное?
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43

Valandersi

Client
Регистрация
19.01.2015
Сообщения
1 923
Благодарностей
1 123
Баллы
113

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
C#:
string num = project.Variables["num"].Value;
HtmlElement elXpath = instance.ActiveTab.FindElementByXPath(String.Format("//*[@id='listBlockPanelDetailedUserGroupsListBlock']//a[contains(@href,'{0}')]", num));
instance.ActiveTab.FullEmulationMouseClick(elXpath, "click");
 
Последнее редактирование:

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
C#:
string num = project.Variables["num"].Value;
HtmlElement elXpath = instance.ActiveTab.FindElementsByXPath(String.Format("//*[@id='listBlockPanelDetailedUserGroupsListBlock']//a[contains(@href,'{0}')]", num));
instance.ActiveTab.FullEmulationMouseClick(elXpath, "click");
ваш код выдает ошибку
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
Разобрался в своем вопросе сам ) Ответ оказался очень простым ) Подвожу итоговый ответ на свой вопрос

что бы использовать в строке Xpath свою переменную вместо выделенных цифр...

//*[@id="listBlockPanelDetailedUserGroupsListBlock"]//a[contains(@href,'578834787')]

...нужно просто скопировать переменную из проекта и вставить в код Xpath

Итоговый поисковый запрос Xpath будет выглядеть так

//*[@id="listBlockPanelDetailedUserGroupsListBlock"]//a[contains(@href,'{-Variable.num-}')]
57037
 
Последнее редактирование:
  • Спасибо
Реакции: Platon и Roman48

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
ваш код выдает ошибку
Как суда вставить?Интересен именно Xpath
if ((instance.ActiveTab.IsVoid) || (instance.ActiveTab.IsNull)) throw new Exception("Не найдено вкладки");
HtmlElement he = instance.ActiveTab.FindElementByAttribute("a", "href", (project.Variables["site"].Value), "regexp", 0);//находим элемент по УРЛу
if (he.IsVoid) throw new Exception("Не найдено и т.д."); // их всегда надо проверять
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);//двигаем мышку к нему
System.Threading.Thread.Sleep(500);//ждем пол секунды перед нажатием
instance.ActiveTab.FullEmulationMouseClick("left", "click");//ЛКМ по ссылке
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
Как суда вставить?Интересен именно Xpath
if ((instance.ActiveTab.IsVoid) || (instance.ActiveTab.IsNull)) throw new Exception("Не найдено вкладки");
HtmlElement he = instance.ActiveTab.FindElementByAttribute("a", "href", (project.Variables["site"].Value), "regexp", 0);//находим элемент по УРЛу
if (he.IsVoid) throw new Exception("Не найдено и т.д."); // их всегда надо проверять
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);//двигаем мышку к нему
System.Threading.Thread.Sleep(500);//ждем пол секунды перед нажатием
instance.ActiveTab.FullEmulationMouseClick("left", "click");//ЛКМ по ссылке
К сожалению в C# я почти не соображаю. Свой Xpath я искал для кубика и нашел решение по итогу. До C# я толком не дошел и как правильно в C# использовать Xpath вам ответить не смогу
 

Вложения

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
Разобрался в своем вопросе сам )
Итоговый поисковый запрос Xpath будет выглядеть так

//*[@id="listBlockPanelDetailedUserGroupsListBlock"]//a[contains(@href,'{-Variable.num-}')]
Поправил свой пример, в FindElementsByXPath буква s лишняя закралась :-) в своем сообщении я ее убрал, скопировал неправильный код выше, что бы не запускать РМ.
 
Последнее редактирование:
  • Спасибо
Реакции: orka13 и Deisler

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
Поправил свой пример, в FindElementsByXPath буква s лишняя закралась :-) в своем сообщении я ее убрал, скопировал неправильный код выше, что бы не запускать РМ.
В первую очередь я искал как вставлять переменную Xpath без использования С# и я это нашел )
Ваш способ рано или поздно тоже опробую, спасибо
 
  • Спасибо
Реакции: Koqpe

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)