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

Rara

Регистрация: 14 мар 2007
Offline Активность: 02 ноя 2013 12:21
-----

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

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

10 октября 2013 - 13:08

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

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

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

В теме: Webdriver и TeamCity

25 сентября 2013 - 12:24

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

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

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

В теме: Webdriver и TeamCity

13 сентября 2013 - 12:02

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

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

В теме: Динамические объекты

19 июля 2013 - 14:20

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

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

19 июля 2013 - 11:29

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 и унаследовать от него все тестовые классы.