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

Публикации Rara

16 публикаций создано Rara (учитываются публикации только с 29 марта 2023)


#122632 Selenium + Thucydides + Java: драйвер не видит "скрытые" элеме

Отправлено автор: Rara 10 октября 2013 - 13:08 в Selenium - Functional Testing

Видимо в новой версии Selenium поменялся алгоритм определения видимости элемента.

Попробуйте делать клик с использованием JavaScript:

WebElement element = getDriver().findElement(By.xpath("//*[@id='bank']/li["+randomChose+"]/span"));
getDriver().executeScript("arguments[0].click();", element);



#122132 Webdriver и TeamCity

Отправлено автор: Rara 25 сентября 2013 - 12:24 в Selenium - Functional Testing

Обидно, конечно, что в режиме сервиса - никак.

Если это критично, то можно попробовать и в режиме сервиса. Думаю, что если сервис запустить не от учётной записи System, а от учётной записи залогиненного пользователя, то он сможет иметь доступ к рабочему столу, так же как обычное приложение. Когда-то читал про такой вариант, но сам не проверял, не было необходимости.

P.S. Расскажите про результат, если будете пробовать.



#121793 Webdriver и TeamCity

Отправлено автор: Rara 13 сентября 2013 - 12:02 в Selenium - Functional Testing

Это известная проблема. Чтобы её устранить, нужно сделать так, чтобы TeamCity-агент запускался в режиме приложения, а не сервиса (как у вас). При таком запуске ваш билд (тестовый скрипт) сможет иметь доступ к рабочему столу и вы сможете увидеть FireFox, и все действия которые в нём происходят.

Единственные неудобство данного варианта - постоянно залогиненый пользователь на сервере. Придётся использовать RAdmin (рекомендую) или VNC, чтобы подключаться к сессии залогиненого пользователя. Можно использовать и RDP, но тогда придётся постоянно держать открытым окно удалённой сессии, что неудобно.



#120083 Динамические объекты

Отправлено автор: Rara 19 июля 2013 - 14:20 в Selenium - Functional Testing

Лучше цикл сделать перед assert'ом, иначе до него дело может не дойти.



#120064 Selemium + JUnit: Использование AssertionError в другом методе

Отправлено автор: Rara 19 июля 2013 - 11:29 в Selenium - Functional Testing

package wargaming;

import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;

import static org.junit.Assert.fail;

public class JustForTest {
    @Rule
    public TestRule watchman = new TestWatcher() {
        @Override
        protected void failed(Throwable e, Description description) {
            System.out.println(description.getMethodName() + ": " + e.getLocalizedMessage());
        }
    };

    @Test
    public void test1() {
        fail("Сообщение об ошибке");
    }
}

Перегружаемый метод failed() запускается при ошибках в методах аннотированных @Test перед выполнением метода с аннотацией @AfterTest. При этом он получает Description теста и информацию об ошибке. Её можно обработать здесь же или сохранить для обработки в @AfterTest.

Чтобы не прописывать Rule в каждом тесте заново, можно создать базовый класс с Rule и унаследовать от него все тестовые классы.



#119229 WebElement.SendKeys() пишет некоторые буквы капсом

Отправлено автор: Rara 01 июля 2013 - 11:36 в Selenium - Functional Testing

Как быстрое решение могу предложить вводить данные через вставку из буфера обмена.

Какие у вас версии ОС, браузера, java, WebDriver'а?
Что происходит, если выполнять код на другом компьютере, в другом браузере, с другим полем ввода?



#118992 Ожтдание элемента

Отправлено автор: Rara 21 июня 2013 - 11:35 в Selenium - Functional Testing

Если клик всё равно не будет доходить до нужного элемента, значит мы где-то ошиблись. Что делать дальше - я не знаю.
А если будет доходить, значит локатор ненужного элемента мы выбрали правильно. Несмотря на то, что его сложно было найти.



#118951 Достать href с html

Отправлено автор: Rara 20 июня 2013 - 14:05 в Selenium - Functional Testing

Большое спасибо, а как изменить профиль для FirefoxDriver Вы не знаете?

Знаем.



#118950 Ожтдание элемента

Отправлено автор: Rara 20 июня 2013 - 14:02 в Selenium - Functional Testing

Идея хорошая, я уже начал ее реализовывать, но у меня на этой странице нет ни одного элемента .k-loading-image, вообще не понимаю откуда он и как в него клик попадает.

Он может, например, удаляться из DOM при помощи JavaScript.

И еще не понимаю - как вообще возможно, что есть что-то поверх нужного элемента что-то?

Элементам на странице можно задавать координаты. А значит можно нескольким элементам задать одинаковые. Но отображаться на экране будет только один - остальные будут скрыты под ним. Получается, что неважно то, что вебдрайвер (или пользователь) целится указателем мыши в место где находится скрытый веб-элемент. Клик всё равно будет по тому, что сверху. Даже если у него другой локатор.



#118913 Сохранить файл

Отправлено автор: Rara 20 июня 2013 - 08:28 в Selenium - Functional Testing

Мы используем второй способ, но у нас автоматизация только с использованием Firefox (хоть и на разных ОС).

Если везде одна операционка, то можно глянуть в сторону первого способа.
Третий красив своей кроссплатформенностью, кроссбраузерностью и надёжностью (ничего не сломается при выходе новой версии браузеров), но чутка "срезает углы" (не тестирует реальное сохранение файла с использованием функционала браузера).

Вот хорошая статья.



#118909 Сохранить файл

Отправлено автор: Rara 20 июня 2013 - 08:05 в Selenium - Functional Testing

А чем не устраивают варианты, которые предлагает гугл?

Альтернативы, если кратко:
1. Автоматизация кликов по нативным окнам
2. Изменение поведения браузера при загрузке файла (сохранять без диалоговых окон)
3. Скачивание файла без WebDriver'а (получая через него только ссылку)



#118906 Ожтдание элемента

Отправлено автор: Rara 20 июня 2013 - 07:52 в Selenium - Functional Testing

message": "unknown error: Element is not clickable at point (553, 44). Other element would receive the click: \u003Cdiv class=\"k-loading-image\"\u003E\u003C/div\u003E\n (Session info: chrome=27.0.1453.110)\n (Driver info: chromed..."

Судя по этому сообщению клик по факту попадает в какой-то другой элемент (который, видимо, находится поверх нужного нам). Можно попробовать ждать пропадания элемента
div class="k-loading-image"
и лишь затем кликать.

беспроигрышный id

В общем случае, id - не беспроигрышный вариант, так как веб-разработчики могут отходить от стандартов (а иногда просто ошибаться).



#118881 Ожтдание элемента

Отправлено автор: Rara 19 июня 2013 - 14:28 в Selenium - Functional Testing

Тогда попробуйте посмотреть консоль ошибок в браузере (Ctrl+Shift+J в FireFox'е).

тоже самое в IDE бегает безошибочно.

Я бы тогда искал разницу в окружении: версии браузера, веб-драйвера и т.д.



#118876 Ожтдание элемента

Отправлено автор: Rara 19 июня 2013 - 13:54 в Selenium - Functional Testing

Попробуйте на странице, после того как произошёл "затык", поискать элемент по локатору с помощью плагина FirePath к FireFox (его нужно заблаговременно подключить к браузеру в автотесте). И посмотрите, сколько элементов по данному локатору будет найдено:
0 - неверный локатор элемента (возможно он меняется?)
1 - тут я пас (баг веб-драйвера?)
2 и более - возможно первые элементы в DOM'е невидимые, из-за них могут быть проблемы при работе методов visibilityOfElementLocated и click.

Важно анализировать именно ту страницу, на которой упал тест, а не точно такую же в соседнем браузере, т.к. могут быть нюансы.



#116525 Как снять фокус с поля в Selenium IDE

Отправлено автор: Rara 03 апреля 2013 - 14:29 в Selenium - Functional Testing

Попробуйте после ввода информации в поле отправить нажатие клавиши Tab или Enter.

UPD Невнимательно читал вопрос, не заметил что это про IDE. Но, думаю, принцип тот же. Можно попробовать ещё сделать клик на какой-нибудь другой элемент.



#111303 Аналог Firebug

Отправлено автор: Rara 24 октября 2012 - 13:37 в Selenium - Functional Testing

Можно копнуть в следующем направлении: Selenium умеет выполнять JS в браузере, а с помощью JS можно получить элемент на странице по координатам. Т.е., если это сработает, то даже указатель мыши не нужно будет двигать, только получать нужные координаты.

А можете рассказать чуть подробнее, какова конечная цель у всей этой системы?