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

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 941
Благодарностей
4 332
Баллы
113

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
196
Баллы
43
такой трабл:
есть таблица, и куча кубиков которые бегут в строке по ячейкам и берут innertext, но если ячейка пустая, то возникает ошибка и все останавливается:
Выполнение действия СSharp OwnCode Атрибут innertext пустой
Сбойное действие: m2_zhil Xpath

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

Код:
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);
мастера великие, подскажите пожалуйста, что нужно где то дописать? ))
Код:
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
Регистрация
02.04.2016
Сообщения
28
Благодарностей
1
Баллы
8
Пустую строку помоему вот так нужно вернуть
Код:
String.Empty;
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 941
Благодарностей
4 332
Баллы
113
Исключение только поможет обойти ошибку, но не решить задачу.
 

LaGir

Client
Регистрация
01.10.2015
Сообщения
211
Благодарностей
850
Баллы
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;
 
  • Спасибо
Реакции: nik-n
Регистрация
10.07.2017
Сообщения
10
Благодарностей
2
Баллы
3
Ребят подскажите как реализовать следующую задачу есть эксель файл с данными когда первый раз запускается виртуалка и регается аккаунт -берутся данные из первой строки и определенных столбиков.
Как сделать так чтоб при следущем проходе данные брались со второй сроки,при третьем проходе с третьей и так далее
или может есть какой-то способ после взятия данный с первой строки затирать ее и перемещать данные со второй строки в первую.такой бы вариант мне тоже подшел бы
 

nik-n

Client
Регистрация
05.11.2016
Сообщения
236
Благодарностей
19
Баллы
18
Ребят подскажите как реализовать следующую задачу есть эксель файл с данными когда первый раз запускается виртуалка и регается аккаунт -берутся данные из первой строки и определенных столбиков.
Как сделать так чтоб при следущем проходе данные брались со второй сроки,при третьем проходе с третьей и так далее
или может есть какой-то способ после взятия данный с первой строки затирать ее и перемещать данные со второй строки в первую.такой бы вариант мне тоже подшел бы
просто удаление строки не подойдет?
см. операции с таблицей.
http://zennolab.com/wiki/ru:table

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

а вообще наверное вопрос надо было писать в ветку "Вопросы новичков"
 
Последнее редактирование:
Регистрация
10.07.2017
Сообщения
10
Благодарностей
2
Баллы
3
просто удаление строки не подойдет?
см. операции с таблицей.
http://zennolab.com/wiki/ru:table
спасибо,то что искал. осваиваю зендроид второй день)
еще кто то тестировал подмены локации7 у меня почему-то не ставил . хотя пишет что экшен отработал успешно
 

vovain

Client
Регистрация
31.07.2015
Сообщения
183
Благодарностей
2
Баллы
18
Тип Время Сообщение
11:45:41 Компиляция кода Ошибка в действии "CS0103" "Имя "set_action" отсутствует в текущем контексте". [Строка: 2; Cтолбец: 79]
 

jun_dev

Пользователь
Регистрация
04.08.2017
Сообщения
121
Благодарностей
7
Баллы
18
Всем привет. Кто подскажет как установить значение в выпадающих списках? В подобных полях например:
http://prntscr.com/gw1nc5 С помощью Xpath?
 

zennoX

Client
Регистрация
05.04.2014
Сообщения
482
Благодарностей
131
Баллы
43

backoff

Client
Регистрация
20.04.2015
Сообщения
5 923
Благодарностей
6 387
Баллы
113
Как объединить 2 действия или больше в один код?
Не хочу делать на каждое действие отдельный кубик шарпа

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

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

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

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

 
  • Спасибо
Реакции: TIIGR и Gulid

IgorSush

Client
Регистрация
11.02.2016
Сообщения
311
Благодарностей
108
Баллы
43
переменные нужно объявлять один раз. типа

Код:
string a = "aaaa";
....

a = "bbb";
 

backoff

Client
Регистрация
20.04.2015
Сообщения
5 923
Благодарностей
6 387
Баллы
113
можно показать на конкретном примере?

Код:
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 ="[email protected]";

return CommonCode.FindElementAndExecuteAction(instance, xpath_exp, action_ev, set_action);
 
  • Спасибо
Реакции: TIIGR и Gulid

lutik

Client
Регистрация
17.08.2016
Сообщения
9
Благодарностей
3
Баллы
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 ="[email protected]";

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

backoff

Client
Регистрация
20.04.2015
Сообщения
5 923
Благодарностей
6 387
Баллы
113
аа просто стринги надо убрать, спасибо

почему-то мыло не вводит, хотя если делать отдельно, то все норм работает
 
Последнее редактирование:
  • Спасибо
Реакции: TIIGR и Gulid

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
а как оно выведет если return стоит выше
 

backoff

Client
Регистрация
20.04.2015
Сообщения
5 923
Благодарностей
6 387
Баллы
113
  • Спасибо
Реакции: TIIGR и Gulid

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
я не в курсах как, написал же что не шарю в шарпе, можно сразу ответ на голом примере?
я с xPath тоже не в курсах, просто пишу то что вижу, у тебя 2 return, если это всё один код то первый сработает а второй нет
 

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
798
Благодарностей
178
Баллы
43
return по сути останавливает работу скрипта в том месте где был вызван.
project.SendInfoToLog() используй для вывода инфы
 

backoff

Client
Регистрация
20.04.2015
Сообщения
5 923
Благодарностей
6 387
Баллы
113
  • Спасибо
Реакции: TIIGR и Gulid

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
798
Благодарностей
178
Баллы
43
да да я понял что плохо в шарпе разбираешься, я тоже оч плохо в нем шарю.
Я не пытался с умничать
 

WispPo120

Новичок
Регистрация
30.01.2018
Сообщения
3
Благодарностей
3
Баллы
3
  • Спасибо
Реакции: backoff

jun_dev

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

WispPo120

Новичок
Регистрация
30.01.2018
Сообщения
3
Благодарностей
3
Баллы
3
  • Спасибо
Реакции: jun_dev

jun_dev

Пользователь
Регистрация
04.08.2017
Сообщения
121
Благодарностей
7
Баллы
18

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
Как сделать поиск по ключевому слову. Допустим я не знаю - кнопка ли это, чекбокс или что то другое. Как с помощью xpath найти элемент? Пробовал
Код:
Tab tab = instance.ActiveTab;
tab.FindElementByXPath("//*[contains(text(), 'USA')]", 0).RiseEvent("click", "Full");
http://lessons.zennolab.com/en/index
 

Karamzin

Client
Регистрация
24.05.2016
Сообщения
214
Благодарностей
431
Баллы
63
Как сделать поиск по ключевому слову. Допустим я не знаю - кнопка ли это, чекбокс или что то другое. Как с помощью xpath найти элемент? Пробовал
попробуй так
Код:
//*[contains(string(), 'USA')]
 
  • Спасибо
Реакции: ttimbaland1983 и Radzhab

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113

Karamzin

Client
Регистрация
24.05.2016
Сообщения
214
Благодарностей
431
Баллы
63
Если в тэге есть помимо текста еще тэги (рядом, а не вложенные), то text() не срабатывает.
И надо применять string().
Но стринг учитывает все вложенные тэги. Соответственно у тебя находит всю коллекцию вложенных элементов начиная с тэга html, body и далее по списку. А кликаешь ты по 0-му элементу. Соответственно по тэгу html.

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

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