Как добавить переменную в xpath

guloc

Client
Регистрация
12.09.2016
Сообщения
153
Благодарностей
150
Баллы
43
Всем привет не могу понять как добавить переменную в xpatch выражение.
К примеру есть выражение //li[3]//div[1]//div[1]
Вместо 3 нужно подставить переменную
Подскажите как это реализовать?
Вывел 3 в строку
string rrr = project.Variables["cat_1"].Value;
m.click("//li[rrr]//div[1]//div[1]");
Код отрабатывает но ни чего не происходит.
 

dafaroff

Client
Регистрация
03.05.2011
Сообщения
76
Благодарностей
136
Баллы
33
Так
C#:
string rrr = project.Variables["cat_1"].Value;
m.click("//li["+rrr+"]//div[1]//div[1]");
или так
C#:
string rrr = project.Variables["cat_1"].Value;
string xpath = String.Format("//li[{0}]//div[1]//div[1]", rrr);
m.click(xpath);
 
  • Спасибо
Реакции: Koqpe и guloc

guloc

Client
Регистрация
12.09.2016
Сообщения
153
Благодарностей
150
Баллы
43

Agent

Client
Регистрация
25.12.2018
Сообщения
155
Благодарностей
48
Баллы
28
Подскажите, в чем ошибка в моем аналогичном примере.
Вариант 1. Код срабатывает успешно, клик не происходит.
C#:
string rrr = project.Variables["counter"].Value;
var x = instance.ActiveTab.FindElementByXPath(".//*[@id='table-combinations-list']/tbody/tr[+rrr+]/td[7]/div/div/a",0);
x.RiseEvent("click", "full");
Вариант 2. Ошибка. "The name 'm' does not exist in the current context".
C#:
string rrr = project.Variables["counter"].Value;
string xpath = String.Format(".//*[@id='table-combinations-list']/tbody/tr[{0}]/td[7]/div/div/a", rrr);
m.click(xpath);
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
Попробуйте так:
C#:
string rrr = project.Variables["counter"].Value;
var x = instance.ActiveTab.FindElementByXPath(".//*[@id='table-combinations-list']/tbody/tr[" + rrr + "]/td[7]/div/div/a",0);
x.RiseEvent("click", "full");
 
  • Спасибо
Реакции: Agent

Agent

Client
Регистрация
25.12.2018
Сообщения
155
Благодарностей
48
Баллы
28
Попробуйте так:
C#:
string rrr = project.Variables["counter"].Value;
var x = instance.ActiveTab.FindElementByXPath(".//*[@id='table-combinations-list']/tbody/tr[" + rrr + "]/td[7]/div/div/a",0);
x.RiseEvent("click", "full");
Спасибо, работает! Но есть один ньюанс. Код успешно отрабатывает так же и при отсутствии на странице значения из переменной (но не кликает, естественно). Как в неуспешную ветку вывести?
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
C#:
string rrr = project.Variables["counter"].Value;
var x = instance.ActiveTab.FindElementByXPath(".//*[@id='table-combinations-list']/tbody/tr[" + rrr + "]/td[7]/div/div/a",0);
if (x.IsVoid)
{
    throw new Exception("Элемент не найден");
}
x.RiseEvent("click", "full");
 
  • Спасибо
Реакции: Agent

Agent

Client
Регистрация
25.12.2018
Сообщения
155
Благодарностей
48
Баллы
28
Спасибо огромное! )
 

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