Перейти к содержимому

Don_Vito

Регистрация: 16 мар 2018
Offline Активность: 01 июл 2018 19:09
-----

Мои сообщения

В теме: Protractor как ждать элемент правильно ?

16 мая 2018 - 20:24

А у вас в принципе работает что-то типа

 

var el = element(by.xpath("...."));

browser.wait(EC.presenceOf(el), 10000);

browser.wait(EC.visibilityOf(el), 10000);

el.getText();

?

да элемент ждем правильно, т.е. или он сразу есть - все ок, или же таймер 10 сек буде рабоать. Тут подсказали использовать в дебагере .then (JavaScript selenium возвращает специальные Promise-объекты на каждые выполненные действия.)

как то так:

 

get_text_by_xpath = function (xpath) {

return element(by.xpath(xpath)).getText().then((text)=> {

console.log(`XPATH: ${xpath} , returned text: ${text}`) // можно поставить брейкпоинт на этой строке

return text } }


В теме: Protractor как ждать элемент правильно ?

14 мая 2018 - 21:40

 

мой ответ будет из разряда "у больного болит голова, если не поможет нурофен, придется делать лоботомию", но все же

 

1 - элемент может быть present, но не visible, что будет видно по ошибке с которой падает тест.

 

но ждалка типа

browser.wait(EC.visibilityOf(el), timeout

вообще полезная штука в хозяйстве, заводите.

 

2 - getText() не работает с элементами типа text area (и по-моему с некоторыми другими, сходу не припомню), надо getAttribute(value), это есть в спеке трактора.

 

Напишите, пожалуйста, эти расхождения у вас с одним и тем же элементом или с разными? Какую ошибку показывает тест при падении?

 

З.Ы. а - кажется, не совсем правильно поняла вопрос. в общем постою послушаю.

visibilityOf помогло, убрал костыль в виде еще одной попытки считать текст через if-else

к стати дебаг через Phph Storm меня  удовлетворяет, я делаю брейкпоинт * чтоб увидеть какой текст будет возварщен в переменной res после .getText(), но вместо текста вижу чтото типа ElementFinder, почему же так

 

this.get_text_by_xpath = function (xpath){

        var res = this.element_by_xpath(xpath).getText()
        if (res.length>1){
 *           return res;
        }
        else{
            res = this.element_by_xpath(xpath).getText()
  *          return res;
        };
 
 
неужели .then вешать 

 


В теме: Protractor как ждать элемент правильно ?

14 мая 2018 - 20:15

мой ответ будет из разряда "у больного болит голова, если не поможет нурофен, придется делать лоботомию", но все же

 

1 - элемент может быть present, но не visible, что будет видно по ошибке с которой падает тест.

 

но ждалка типа

browser.wait(EC.visibilityOf(el), timeout

вообще полезная штука в хозяйстве, заводите.

 

2 - getText() не работает с элементами типа text area (и по-моему с некоторыми другими, сходу не припомню), надо getAttribute(value), это есть в спеке трактора.

 

Напишите, пожалуйста, эти расхождения у вас с одним и тем же элементом или с разными? Какую ошибку показывает тест при падении?

 

З.Ы. а - кажется, не совсем правильно поняла вопрос. в общем постою послушаю.

 

visibilityOf помогло, убрал костыль в виде еще одной попытки считать текст через if-else

к стати дебаг через Phph Storm меня  удовлетворяет, я делаю брейкпоинт * чтоб увидеть какой текст будет возварщен в переменной res после .getText(), но вместо текста вижу чтото типа ElementFinder, почему же так

 

this.get_text_by_xpath = function (xpath){

        var res = this.element_by_xpath(xpath).getText()
        if (res.length>1){
 *           return res;
        }
        else{
            res = this.element_by_xpath(xpath).getText()
  *          return res;
        };

В теме: Protractor как ждать элемент правильно ?

13 мая 2018 - 08:09

Оказалось что элемент все же есть, но почему то не всегда работает getText()  - возвращает пустую строку, но вот такой фикс сработал:

 

this.get_text_by_xpath = function (xpath){
        var res = this.element_by_xpath(xpath).getText()
        if (res.length>1){
            return res;
        }
        else{
            res = this.element_by_xpath(xpath).getText()
            return res;
        };
 
на 2 проход уже норм, незнаю почему так...
Есть может идеи у кого