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

Техники локализации плавающих дефектов
онлайн, начало 17 августа
Школа для начинающих тестировщиков
онлайн, начало 20 августа
Программирование на Python для тестировщиков
онлайн, начало 14 августа
Тестирование без требований
онлайн, начало 17 августа

SDSLeon

Регистрация: 14 окт 2013
Offline Активность: 14 мар 2014 13:32
-----

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

В теме: Не выбирается елемент из dropdown -а при использовании Firefox driver

18 февраля 2014 - 08:19

Погодите, у вас там

<select/>

или

<ul><li /> </ul>

?

 

Нет ли там хитрости с наведением, фокусировкой, магией JS с навешиванием обработчиков?

<ul><li /> </ul> , магия JS присутствует у нас в компании повсеместно ;) ; возможно что то из того что вы описали присутствует...сейчас не могу сказать с уверенностью.

Но когда Firefox driver кликает по нему, анимация наведения на элемент отсутствует.


В теме: Не выбирается елемент из dropdown -а при использовании Firefox driver

14 февраля 2014 - 16:00

Вы не полностью показали что там в этом элементе.

Попробуйте кликнуть по тому что там внутри.

внутри, текст.

Прикрепленный файл  Выделение_309.png   14,54К   0 Количество загрузок:


В теме: Не выбирается елемент из dropdown -а при использовании Firefox driver

14 февраля 2014 - 11:26

Выглядит вот так

Прикрепленный файл  imb.jpg   30,28К   0 Количество загрузок:


В теме: Обход StaleElementReferenceError: el is not attached в js

13 февраля 2014 - 16:54



В порядке эксперимента разделите получение элемента (где и вылетает это исключение) от клика по нему. Оберните в try{} catch {} именно findElement.

 

кстати, элемент у вас, случайно, не двигается во время клика?

 

 

Вылетало именно при попытке .click(), елемент передобавлялся в DOM из за чего и вылетала ошибка.

try...catch не подходит для ассинхронного кода. Ошибка приходит именно в этот error callback , function(err) где мы и обрабатываем полученную ошибку.

 

Сейчас в этом коде при любой ошибке просто возвращаеться false в wait и wait пытается еще раз попробовать найти елемент и сделать клик.

 

 

Можно написать как то так, что бы перехватывать именно нужную ошибку.

    driver.wait(function() {
        return driver.findElement(target).click().then(
            function(click) { return true },
            function(err) { 
                if (err = StaleElementReferenceError) {
                    return false;
                } else {
                    throw err;
                }
            }
        );
    }, 10000);

В теме: Обход StaleElementReferenceError: el is not attached в js

12 февраля 2014 - 12:09

Если "исключение не перехватывается" это либо ошибка в Java (что маловероятно :)), либо ошибка в Вашем коде -- скорее всего исключение возникает не там, где Вы его пытаетесь перехватывать. Покажите полный stacktrace, может быть это добавит ясности, где оно возникает.

Потерзал наших java скриптеров и они ответили то же что и вы :) ('скорее всего исключение возникает не там, где Вы его пытаетесь перехватывать').

error нужно перехватывать в error callback -e:

driver.wait(function() {
        return driver.findElement(target).click().then(
            function(click) { return true },
            function(err)   { return false }
        );
}, 10000);

Яндекс.Метрика
Реклама на портале