Не получается найти элемент C#

Tsuk15

Client
Регистрация
25.04.2017
Сообщения
102
Благодарностей
40
Баллы
28
Всем привет! Сижу щас ковыряю вотсап веб. В общем я паршу номер телефона с которого отправлено новое сообщение и хочу кликнуть по нему через С# сниппет.
Написал код, который находит это сообщение по innertext и открывает его. Но сообщения не открывались, я сделал проверку и оказывается программа просто не может найти элемент. Короче на словах не очень понятно, вот код:
Код:
var elementNomber_message = instance.ActiveTab.FindElementByAttribute("span","innertext",project.Variables["Nomber_message"].Value,"regexp","0"); //где "Nomber_message" - это переменная из проекта с номером
if (!elementNomber_message.IsVoid)
{
    return "ok";
}
else
{
    return "no";    //после исполнения постоянно возвращает no, из чего следует, что элемент не найден
}


//пробовал вариант вообще тупой без переменной, то есть

var elementNomber_message = instance.ActiveTab.FindElementByAttribute("span","innertext","+7 123 123-12-12","regexp","0"); //но так тоже не получается
if (!elementNomber_message.IsVoid)
{
    return "ok";
}
else
{
    return "no";   
}
При чем через стандартный конструктор действий все получается, но там номера вида "\+7\ 123\ 123-12-12"
В общем в чем может быть проблема? Сижу ломаю голову. Конечно могу сделать стандартными методами, но в последствии на C# будет удобнее
 

sanya

Client
Регистрация
08.09.2015
Сообщения
196
Благодарностей
51
Баллы
28
("span","innertext","+7 123 123-12-12","regexp","0") так не правильно правльно номер вносить в таком виде "\+7\ 123\ 123-12-12" так как вы используете "regexp". Если хотите по номеру без изменений то измените "regexp" на "text"
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 995
Благодарностей
787
Баллы
113
экранирование тут не при чём, у вас написано !elementNomber_message.IsVoid - это значит если элемента нет вернуть ок, если нет ноу... знак ! инвертирует условие
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 995
Благодарностей
787
Баллы
113
уберите ! и всё заработает
 

Tsuk15

Client
Регистрация
25.04.2017
Сообщения
102
Благодарностей
40
Баллы
28
экранирование тут не при чём, у вас написано !elementNomber_message.IsVoid - это значит если элемента нет вернуть ок, если нет ноу... знак ! инвертирует условие
Блин вот это я реально тупанул, НО! факт в том, что потом такой код:
Код:
var elementNomber_message = instance.ActiveTab.FindElementByAttribute("span","innertext","+7 123 123-12-12","regexp","0");
elementNomber_message.RiseEvent("click","Full");
не работает почему-то
А вот как посоветовал комментатор выше:
Код:
var elementNomber_message = instance.ActiveTab.FindElementByAttribute("span","innertext","+7 123 123-12-12","text","0");
elementNomber_message.RiseEvent("click","Full");
- сработало. В чем ошибка? Вроде раньше в подобных случая все так работало... в принципе задача решена, но мне уже интересно чисто для понимания
 

sanya

Client
Регистрация
08.09.2015
Сообщения
196
Благодарностей
51
Баллы
28
В регулярных выражениях нужно использовать экранирование спецсимволов, пробел является таковым, а в вашем номере содержится пробел, а параметр text ищет как есть, точное совпадение
 

Tsuk15

Client
Регистрация
25.04.2017
Сообщения
102
Благодарностей
40
Баллы
28
В регулярных выражениях нужно использовать экранирование спецсимволов, пробел является таковым, а в вашем номере содержится пробел, а параметр text ищет как есть, точное совпадение
Я изначально так пробовал, но сниппет вообще так ошибку выдавал
 

sanya

Client
Регистрация
08.09.2015
Сообщения
196
Благодарностей
51
Баллы
28

Tsuk15

Client
Регистрация
25.04.2017
Сообщения
102
Благодарностей
40
Баллы
28

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 995
Благодарностей
787
Баллы
113
В регулярных выражениях нужно использовать экранирование спецсимволов, пробел является таковым, а в вашем номере содержится пробел, а параметр text ищет как есть, точное совпадение
а зачем экранировать пробелы? я никогда не экранирую - и всё находит. в правилах регекса не видел требования экранировать пробелы, всегда вижу что так делает зенка - но для чего и почему так и не сообразил, уже в других темах как-то этот вопрос поднимали - без экранирования всё находит по регексу - зачем экранировать??
 

sanya

Client
Регистрация
08.09.2015
Сообщения
196
Благодарностей
51
Баллы
28
Так заложено в зенно вопросы к разрабам, я ответил на вопрос создателя темы
 

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