Не получается найти элемент 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
Сообщения
184
Благодарностей
49
Баллы
28
("span","innertext","+7 123 123-12-12","regexp","0") так не правильно правльно номер вносить в таком виде "\+7\ 123\ 123-12-12" так как вы используете "regexp". Если хотите по номеру без изменений то измените "regexp" на "text"
 

arhip1985

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

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 994
Благодарностей
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
Сообщения
184
Благодарностей
49
Баллы
28
В регулярных выражениях нужно использовать экранирование спецсимволов, пробел является таковым, а в вашем номере содержится пробел, а параметр text ищет как есть, точное совпадение
 

Tsuk15

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

sanya

Client
Регистрация
08.09.2015
Сообщения
184
Благодарностей
49
Баллы
28
где-то видимо ошибку допустили
 

Tsuk15

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

arhip1985

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

sanya

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

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