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

Тестирование безопасности
онлайн, начало 16 июня
Автоматизатор мобильных приложений
онлайн, начало 16 июня
Автоматизация тестирования REST API на Python
онлайн, начало 16 июня
Selenium WebDriver: полное руководство
онлайн, начало 18 июня

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);

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