XPath универсальный C# шаг работы с элементами

Astraport

Client
Joined
May 1, 2015
Messages
5,011
Reaction score
4,487
Points
113
Похоже на динамический id. Привязываться к таким не стоит.
 

AZANIR

Client
Joined
Jun 9, 2014
Messages
405
Reaction score
200
Points
43
такой трабл:
есть таблица, и куча кубиков которые бегут в строке по ячейкам и берут innertext, но если ячейка пустая, то возникает ошибка и все останавливается:
Выполнение действия СSharp OwnCode Атрибут innertext пустой
Сбойное действие: m2_zhil Xpath

я знаю что есть ячейки пустые но мне в этом случае нужно возвращать пустое значение в переменную

Code:
string count = project.Variables["count1_tr"].Value;

string xpath_exp = "//tr[@class='datarows'][" + count + "]/td[@id='td-x-7']";
string action_ev = "get|innerText";
string set_action ="";
return CommonCode.FindElementAndExecuteAction(instance, xpath_exp, action_ev, set_action);
мастера великие, подскажите пожалуйста, что нужно где то дописать? ))
Code:
string count = project.Variables["count1_tr"].Value;
try{
string xpath_exp = "//tr[@class='datarows'][" + count + "]/td[@id='td-x-7']";
string action_ev = "get|innerText";
string set_action ="";
return CommonCode.FindElementAndExecuteAction(instance, xpath_exp, action_ev, set_action);}
catch(return "";}
 

rediffusion

Client
Joined
Apr 2, 2016
Messages
28
Reaction score
1
Points
8
Пустую строку помоему вот так нужно вернуть
Code:
String.Empty;
 

Astraport

Client
Joined
May 1, 2015
Messages
5,011
Reaction score
4,487
Points
113
Исключение только поможет обойти ошибку, но не решить задачу.
 

LaGir

Client
Joined
Oct 1, 2015
Messages
244
Reaction score
976
Points
93
я знаю что есть ячейки пустые но мне в этом случае нужно возвращать пустое значение в переменную
Можно зайти в Общий код и удалить пару строчек:
2017-07-10_11-58-37.png

А можно использовать более простой код, без Общего кода:
C#:
string count = project.Variables["count1_tr"].Value;
string xPath = "//tr[@class='datarows'][" + count + "]/td[@id='td-x-7']";
return instance.ActiveTab.FindElementByXPath(xPath,0).InnerText;
 
  • Thank you
Reactions: nik-n
Joined
Jul 10, 2017
Messages
10
Reaction score
2
Points
3
Ребят подскажите как реализовать следующую задачу есть эксель файл с данными когда первый раз запускается виртуалка и регается аккаунт -берутся данные из первой строки и определенных столбиков.
Как сделать так чтоб при следущем проходе данные брались со второй сроки,при третьем проходе с третьей и так далее
или может есть какой-то способ после взятия данный с первой строки затирать ее и перемещать данные со второй строки в первую.такой бы вариант мне тоже подшел бы
 

nik-n

Client
Joined
Nov 5, 2016
Messages
247
Reaction score
21
Points
18
Ребят подскажите как реализовать следующую задачу есть эксель файл с данными когда первый раз запускается виртуалка и регается аккаунт -берутся данные из первой строки и определенных столбиков.
Как сделать так чтоб при следущем проходе данные брались со второй сроки,при третьем проходе с третьей и так далее
или может есть какой-то способ после взятия данный с первой строки затирать ее и перемещать данные со второй строки в первую.такой бы вариант мне тоже подшел бы
просто удаление строки не подойдет?
см. операции с таблицей.
http://zennolab.com/wiki/ru:table

либо использовать счетчик: создаешь переменную и после каждой проходки увеличиваешь число на 1, эту переменную используешь когда берешь значение в таблице.

а вообще наверное вопрос надо было писать в ветку "Вопросы новичков"
 
Last edited:
Joined
Jul 10, 2017
Messages
10
Reaction score
2
Points
3
просто удаление строки не подойдет?
см. операции с таблицей.
http://zennolab.com/wiki/ru:table
спасибо,то что искал. осваиваю зендроид второй день)
еще кто то тестировал подмены локации7 у меня почему-то не ставил . хотя пишет что экшен отработал успешно
 

vovain

Client
Joined
Jul 31, 2015
Messages
183
Reaction score
2
Points
18
Тип Время Сообщение
11:45:41 Компиляция кода Ошибка в действии "CS0103" "Имя "set_action" отсутствует в текущем контексте". [Строка: 2; Cтолбец: 79]
 

jun_dev

Пользователь
Joined
Aug 4, 2017
Messages
121
Reaction score
7
Points
18
Всем привет. Кто подскажет как установить значение в выпадающих списках? В подобных полях например:
http://prntscr.com/gw1nc5 С помощью Xpath?
 

zennoX

Client
Joined
Apr 5, 2014
Messages
487
Reaction score
137
Points
43
Всем привет. Кто подскажет как установить значение в выпадающих списках? В подобных полях например:
http://prntscr.com/gw1nc5 С помощью Xpath?
selecteditems

p.s. через запись попробуйте и посмотрите что пишет в экшен
 

backoff

Client
Joined
Apr 20, 2015
Messages
6,225
Reaction score
6,556
Points
113
Как объединить 2 действия или больше в один код?
Не хочу делать на каждое действие отдельный кубик шарпа

например, нужно авторизоваться в гугле

логика:
- заходим на главную
- наживаем войти
- вводим мыльник
- жмем далее
- вводим пасс
- далее

Как это все объединить в один кубик?
Выдает ошибку.

объясните как можно проще :-)
спасибо

 
  • Thank you
Reactions: TIIGR and Gulid

IgorSush

Client
Joined
Feb 11, 2016
Messages
312
Reaction score
108
Points
43
переменные нужно объявлять один раз. типа

Code:
string a = "aaaa";
....

a = "bbb";
 

backoff

Client
Joined
Apr 20, 2015
Messages
6,225
Reaction score
6,556
Points
113
можно показать на конкретном примере?

Code:
string xpath_exp = "(//a[@id='gb_70'])";
string action_ev = "rise|click";
string set_action ="";

return CommonCode.FindElementAndExecuteAction(instance, xpath_exp, action_ev, set_action);


string xpath_exp = "(//input[@id='identifierId'])";
string action_ev = "set|value";
string set_action ="vlad.polsky55@gmail.com";

return CommonCode.FindElementAndExecuteAction(instance, xpath_exp, action_ev, set_action);
 
  • Thank you
Reactions: TIIGR and Gulid

lutik

Client
Joined
Aug 17, 2016
Messages
9
Reaction score
3
Points
3
string xpath_exp = "(//a[@id='gb_70'])";
string action_ev = "rise|click";
string set_action ="";

return CommonCode.FindElementAndExecuteAction(instance, xpath_exp, action_ev, set_action);


xpath_exp = "(//input[@id='identifierId'])";
action_ev = "set|value";
set_action ="vlad.polsky55@gmail.com";

return CommonCode.FindElementAndExecuteAction(instance, xpath_exp, action_ev, set_action);
 

backoff

Client
Joined
Apr 20, 2015
Messages
6,225
Reaction score
6,556
Points
113
аа просто стринги надо убрать, спасибо

почему-то мыло не вводит, хотя если делать отдельно, то все норм работает
 
Last edited:
  • Thank you
Reactions: TIIGR and Gulid

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,042
Points
113
а как оно выведет если return стоит выше
 

backoff

Client
Joined
Apr 20, 2015
Messages
6,225
Reaction score
6,556
Points
113
а как оно выведет если return стоит выше
я не в курсах как, написал же что не шарю в шарпе, можно сразу ответ на голом примере?
 
  • Thank you
Reactions: TIIGR and Gulid

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,042
Points
113
я не в курсах как, написал же что не шарю в шарпе, можно сразу ответ на голом примере?
я с xPath тоже не в курсах, просто пишу то что вижу, у тебя 2 return, если это всё один код то первый сработает а второй нет
 

z@jivalo

Client
Joined
Dec 27, 2016
Messages
800
Reaction score
179
Points
43
return по сути останавливает работу скрипта в том месте где был вызван.
project.SendInfoToLog() используй для вывода инфы
 

backoff

Client
Joined
Apr 20, 2015
Messages
6,225
Reaction score
6,556
Points
113
  • Thank you
Reactions: TIIGR and Gulid

z@jivalo

Client
Joined
Dec 27, 2016
Messages
800
Reaction score
179
Points
43
да да я понял что плохо в шарпе разбираешься, я тоже оч плохо в нем шарю.
Я не пытался с умничать
 

WispPo120

Новичок
Joined
Jan 30, 2018
Messages
3
Reaction score
3
Points
3
я не в курсах как, написал же что не шарю в шарпе, можно сразу ответ на голом примере?
просто удали слово return в четвертой строчке.
 
  • Thank you
Reactions: backoff

jun_dev

Пользователь
Joined
Aug 4, 2017
Messages
121
Reaction score
7
Points
18
Кто подскажет как задать путь xPath по атрибуту value ?
пример следующий:
https://prnt.sc/i874ho
Знаю как по другим делать, но хотелось бы узнать как по value захватить путь.
Для примера оставлю код, как ухватить по html значению:
Code:
tab.FindElementByXPath("//button[contains(text(),'Save settings')]", 0).RiseEvent("click", "Full");
Спасибо за ответ
 

WispPo120

Новичок
Joined
Jan 30, 2018
Messages
3
Reaction score
3
Points
3
Кто подскажет как задать путь xPath по атрибуту value ?
пример следующий:
https://prnt.sc/i874ho
Знаю как по другим делать, но хотелось бы узнать как по value захватить путь.
А если так?
//button[@value= 'Save settings']
 
  • Thank you
Reactions: jun_dev

jun_dev

Пользователь
Joined
Aug 4, 2017
Messages
121
Reaction score
7
Points
18

Radzhab

Client
Joined
May 23, 2014
Messages
1,500
Reaction score
1,269
Points
113
Как сделать поиск по ключевому слову. Допустим я не знаю - кнопка ли это, чекбокс или что то другое. Как с помощью xpath найти элемент? Пробовал
Code:
Tab tab = instance.ActiveTab;
tab.FindElementByXPath("//*[contains(text(), 'USA')]", 0).RiseEvent("click", "Full");
http://lessons.zennolab.com/en/index
 

Karamzin

Client
Joined
May 24, 2016
Messages
213
Reaction score
432
Points
63
Как сделать поиск по ключевому слову. Допустим я не знаю - кнопка ли это, чекбокс или что то другое. Как с помощью xpath найти элемент? Пробовал
попробуй так
Code:
//*[contains(string(), 'USA')]
 

Radzhab

Client
Joined
May 23, 2014
Messages
1,500
Reaction score
1,269
Points
113

Karamzin

Client
Joined
May 24, 2016
Messages
213
Reaction score
432
Points
63
не пашет
Если в тэге есть помимо текста еще тэги (рядом, а не вложенные), то text() не срабатывает.
И надо применять string().
Но стринг учитывает все вложенные тэги. Соответственно у тебя находит всю коллекцию вложенных элементов начиная с тэга html, body и далее по списку. А кликаешь ты по 0-му элементу. Соответственно по тэгу html.

В примере я пролистал до 13-го вложенного элемента.
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)