//a/d/e[contains(text(),'50 копеек')]/following-sibling::f
Например так?
18 публикаций создано tab15 (учитываются публикации только с 20 апреля 2023)
Отправлено автор: tab15 25 февраля 2015 - 11:23 в Автоматизированное тестирование
//a/d/e[contains(text(),'50 копеек')]/following-sibling::f
Например так?
Отправлено автор: tab15 14 января 2015 - 13:45 в Selenium - Functional Testing
Наверное, вам нужно создать профайл браузера для автотестов, в котором будут разрешены/запрещены необходимые плагины.
Отправлено автор: tab15 07 января 2015 - 14:26 в Selenium - Functional Testing
Решилось всё обёрткой ThreadLocal<WebDriver> вместо обычного WebDriver
Отправлено автор: tab15 30 декабря 2014 - 14:55 в Selenium - Functional Testing
Здравствуйте,
возникла необходимость запуска тестов параллельно.
Используется JUnit. RemoteWebDriver и подправленный (как в этом примере http://testingbot.co...llel-junit.html) Parameterized runner.
Вроде все работает, но есть одна проблема. Необходимо, чтобы при ошибке тест автоматически делал скриншот. Я пытался создать свой Listener, унаследованный от RunListener, но не могу получить необходимую инстанцию WebDriverа (сам процесс взятия скрина работает, я его проверил, сделав драйвер статическим). Инициализация драйвера происходит в тесте - родителе для всех остальных тестов.
Вопрос: как получить необходимый драйвер для взятия скриншота, когда тесты бегут параллельно? И вообще может быть есть какой то другой разумный способ?
За ранее спасибо.
Всех с натсупающим!
Отправлено автор: tab15 04 ноября 2014 - 15:39 в Selenium - Functional Testing
Действительно, Алексей, проблема была в testInstance. Наш тест проект - spring проект. Покопавшись я наткнулся на следующую вещь http://stackoverflow...unit-test-error. И действительно, наведя порядок в dependencies, всё заработало.
Хмм 3 дня ушло на поиск проблемы.
Отправлено автор: tab15 04 ноября 2014 - 10:05 в Selenium - Functional Testing
Дело в том что тест не работает (не запускается IE) именно при запуске из коммандной строки. При запуске через IDE все работает. Запускается IE нет никаких проблем. Поэтому при дебаггинге все проходит и нет NullPointerException. Именно поэтому мне кажется, что я где-то что-то упустил
setup-методе Вы инициализируете локальную переменную driver, а не поле класса
Нет все там глобально:) Этот кусочек кода я упростил для наглядности.
Выписать значение переменных в консоль тоже не получится - у меня нет прав на изменения в xxx.xxxxx.common.test.endtoend, где и находится источник ошибки
Отправлено автор: tab15 04 ноября 2014 - 09:18 в Selenium - Functional Testing
Running xxx.xxxxx.tests.BlahTest java.lang.NullPointerException at xxx.xxxxx.common.test.endtoend.ScreenshotTakingJUnit4ClassRunner.captureScreenshot(ScreenshotTakingJUnit4ClassRunner.java:120) at xxx.xxxxx.common.test.endtoend.ScreenshotTakingJUnit4ClassRunner.access$000(ScreenshotTakingJUnit4ClassRunner.java:24) at xxx.xxxxx.common.test.endtoend.ScreenshotTakingJUnit4ClassRunner$1.testFailure(ScreenshotTakingJUnit4ClassRunner.java:71) at org.junit.runner.notification.RunNotifier$4.notifyListener(RunNotifier.java:139) at org.junit.runner.notification.RunNotifier$SafeNotifier.run(RunNotifier.java:61) at org.junit.runner.notification.RunNotifier.fireTestFailures(RunNotifier.java:134) at org.junit.runner.notification.RunNotifier.fireTestFailure(RunNotifier.java:128) at org.junit.internal.runners.model.EachTestNotifier.addFailure(EachTestNotifier.java:23) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:275) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at xxx.xxxxx.common.test.endtoend.ScreenshotTakingJUnit4ClassRunner.run(ScreenshotTakingJUnit4ClassRunner.java:79) at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:45) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164) at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110) at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175) at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
Это то что находится в консоли.
В общем у нас есть метод, который делает скриншот при возникновении ошибок.
Думается мне, что судя по логу (ScreenshotTakingJUnit4ClassRunner.java:120), все это дело валится при вызове getWebDriver()
File screenshot = ((TakesScreenshot) testInstance.getWebDriver()).getScreenshotAs(OutputType.FILE);
Отправлено автор: tab15 04 ноября 2014 - 08:50 в Selenium - Functional Testing
Всем привет!
Возникла необходимовсть запускать тесты в IE (опыта с этим драйвером к сожалению нет). Получилось настроить и запустить тесты из IDE (Idea).
Следующий шаг - запуск при помощи Maven. Вот тут возникла проблема. Internet Explorer никак не хочет запускаться. Тест валится при обращении к драйверу на java.lang.NullPinterException
Мои действия:
- IEDriverServer.exe скачан в папку C:\IEDriver
- В системную переменную Path добавлен путь C:\IEDriver (на всякий случай и в коде)
- Инициализация драйвера происходит следующим образом
File file = new File("c:/IEDriver/IEDriverServer.exe"); System.setProperty("webdriver.ie.driver", file.getAbsolutePath()); final DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer(); сapabilities.setCapability(ШnternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true); WebDriver driver = new InternetExplorerDriver(capabilities);
- maven команда для запуска тестов
mvn -DfailIfNoTests=false test
- OS Windows7 x64, драйвер тоже x64, IE10 (также опробовано на OS Windows server 2003 x86, driver x32, IE8)
Уверен, что дело в какой нибудь ерунде, про которую я забыл.
Спасибо за советы.
Отправлено автор: tab15 16 октября 2014 - 11:03 в Автоматизированное тестирование
На счет Soap UI могу кое что сказать из личного опыта (когда то на нем пришлось делать нагрузочное тестирование в версии 4.5)
Soap UI в первую очередь предназначен для автоматического тестирования. Нагрузочное тестирование в нем представлено не ахти: скудная настройка нагрузочных сценариев, нет "красивых" репортов и графиков, неудобная настройка передачи данных для тестов, возможность тестировать только веб-сервисы. В общем Soap UI подходит скорее для быстрой проверки нагрузки при помощи своих же готовых автоматических тестов.
Может быть сейчас другая ситуация, хотя не верится, для этих целей Smarbear (то отделение которое делает Soap UI) продвигает Load UI.
Отправлено автор: tab15 16 октября 2014 - 10:10 в Selenium - Functional Testing
Можно использовать Category в JUnit, а с Jenkins Антом запускать только тесты определенной категории (название категории передавать как Property в Ant скрипт)
Отправлено автор: tab15 25 июля 2014 - 15:07 в Selenium - Functional Testing
И еще вопрос от меня: каким образом вы добавляете trend (график) в сообщение? У меня только как ссылку получается:( Есть ли какой то способ посылать его как приложение к письму?
Этот способ не работает http://stackoverflow...r-as-attachment из-за нашей внутрифирменной политики безопасности.
Отправлено автор: tab15 25 июля 2014 - 15:02 в Selenium - Functional Testing
В более новых версиях плагина появился параметр showMessage, попробуйте ${FAILED_TESTS, showStack=false, showMessage=false}
Отправлено автор: tab15 23 июля 2014 - 08:22 в Selenium - Functional Testing
Например, написать в TestBase метод getWebDriver(), который будет возвращать вебдрайвер, а потом с ним из тестов можно работать как хотите
Отправлено автор: tab15 18 марта 2014 - 08:14 в Selenium - Functional Testing
leipreachan, cпасибо за ответ.
Тесты у нас на 4х машинах, все под линуксом. Но, к сожалению, тестов намного больше.
Инетересует именно к/л возможность удерживать фокус при помощи кода. Или единственный способ прямо "жестким" способом залазить в DOM страницы? Или, на крайний случай, может быть есть какая-то логика в том когда фокус перескакивает с теста на тест (пока мне кажется, что это происходит случайным образом)?
Отправлено автор: tab15 17 марта 2014 - 18:27 в Selenium - Functional Testing
Здравствуйте,
возникла следующая проблема. Имеется в наличии много тестов, разных веб-приложений, которые запускаются автоматически при изменениях в системе (для этих целей используем Jenkins). К сожалению случается, что запускаются 2 теста в одно и то же время на одной и той же машине. И эти тесты друг у друга то и дело крадут фокус. Все бы ничего, но в наличие есть тесты, где при потере фокуса происходит к/л событие (где-то javascript, где-то ajax), из-за которого тест не проходит.
Не сталкивался ли кто с такой проблемой? И как она решается? К сожалению, распределить тесты полностью так, чтобы они бежали в разное время или на разных машинах, нет возможности.
Отправлено автор: tab15 14 марта 2014 - 08:38 в Selenium - Functional Testing
Я пока не работал с PageFactory, но откуда оно будет знать какие из задекларированных элементов инициализировать, а какие - нет?
PageFactory по умолчанию работает с так называемой "lazy" инициализацией, т.е. те элементы, которые у вас обозначены аннотацией @FindBy Selenium будет искать только при обращении к ним (в моем примере выше addButton будет инициализироваться только при действии addButton.click())
Почитайте http://internetka.in...um-page-object/ там все очень наглядно объяснено.
Отправлено автор: tab15 13 марта 2014 - 21:19 в Selenium - Functional Testing
В связке Jenkins - Ant, наверное проще добавить baseUrl как параметр, который будет использоваться в качестве аргумента при запуске теста.
вот пример:
Отправлено автор: tab15 13 марта 2014 - 20:50 в Selenium - Functional Testing
Если я правильно понял вопрос, то, наверное, можно решить это тем, что метод добавления элемента на страницу будет возвращать саму эту страницу, а в теле метода добавлять ее в PageFactory.
Что то типа
public class FooPage() { private WebDriver driver; // Кнопка для добавления элемента на страницу @FindBy(id = "bar") private WebElement addButton; // конструктор public FooPage(WebDriver driver) { PageFactory.initElements(driver, this); this.driver = driver; } // метод, добавляющий элемент при нажатии на кнопку, и добавляющий "обновленную" страницу в PageFactory public FooPage addElementX() { addButton.click(); PageFactory.initElements(driver, this); return this.getClass(); } }
Community Forum Software by IP.Board Русификация от IBResource
Лицензия зарегистрирована на: Software-Testing.Ru