Встала задача по тестированию софта в различных временных срезах. Используемый стек:
- сервер приложений - JBoss, JSP
- база данных - Oracle Enterprise 11.2
- логика реализована в основном на хранимых процедурах и пакетах PL/SQL
Необходимо автоматизировать тестирование связки БД-сервер приложений-клиент в различных временных срезах.
Было бы интересно, какие подходы/инструменты вы используете для автоматизации подобных задач? Например, синхронно в тесте менять время на всех системах, участвующих в тестировании?
Exception in thread "main" org.openqa.selenium.NoSuchWindowException: Unable to get browser (WARNING: The server did not provide any stacktrace information)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:638)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:661)
at org.openqa.selenium.remote.RemoteWebDriver.getTitle(RemoteWebDriver.java:329)
at Yandex.main(Yandex.java:13)
Потратил на поиски ответа уже более 2х часов. Были аналогичные вопросы и ответы: "проверь настройки безопасности ИЕ. Должно быть Медиум везде." Проверил. В одном поднял с Лоу до медиум. Другие опустил до медиума. Проблема сохранилась.
Мне вот что интересно. Если запустить ИЕвебдрайвер мануально. по слушает порт 5555. Если через Эклипс, то каждый раз разный. Если бы и этот момент пояснили, было бы крайне прекрасно.
Но а так. Подскажите, у кого какие идеи есть на тему "Unable to get browser", если он запускается, и яндекс открывается.
У меня есть мысль, что код забегает вперед, ИЕ не успевает отработать. Пытался поиграть с Вэйтом, но отсутствие знания семантики не дает развернуть эту идею дальше.
На предложение: "обнови драйвер и пр." отвечу так: всё "свежайшее" и "последнейшее".
У меня возникла такая проблема. Я создал обёртку над шаблоном PageFactory с помощью DefaultFieldDecorator. Теперь использую свои аннотации и способы поиска элементов.
Но у меня возникла проблема с "ленивой инициализацией". Иногда мне бы хотелось закэшировать веб-элементы, свойства которых я получаю, но не знаю как. Аннотация @CacheLookup не работает после "расширения" PageFactory с помощью DefaultFieldDecorator. Да и хотелось бы не "всегда кэшировать отдельный элемент", а "на время включать кэширование, а затем (после получения нескольких свойств) отключать".
Кусок кода, где поиск происходит дважды:
webElement.clear();
webElement.click();
Переопределение делаю как-то так (сам понимаю с трудом, так как делал года три назад):
public class MyFieldDecorator extends DefaultFieldDecorator {
public MyFieldDecorator(ElementLocatorFactory factory) {
super(factory);
}
public class MyElementLocator implements ElementLocator {
private final SearchContext searchContext;
private final By by;
public MyElementLocator(SearchContext searchContext, Field field) {
this.searchContext = searchContext;
MyAnnotations annotations = new MyAnnotations(field);
by = annotations.buildFirstBy();
}
public final class MyElementLocatorFactory implements ElementLocatorFactory, SearchContext {