Добрый день. Пишу тест с использованием #webdriver .
Стоит такая задача. Во время теста, после перехода на следующую страницу, мне нужно получить текущий URL и после этого прибавить к нему определенное значение. И уже после этого чтоб тест выполнялся с новым URL(к которому добавлено значение).
В начале теста сделал такую настройку:
@BeforeClass
public static void setup(){
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://e-test.aps-market.com/Tenders");
}
Прописал такую переменную:
String currURL = WebDriverRunner.url();
Каждый тест идет отдельно. Используется аннотация @Test перед каждым тестом. И в начале необходимого мне теста(3-его по счету) я прописал:
driver.get(currURL + "?turbo=28800");
При запуске сначала запускается URL указанный в настройках BeforeClass. И почему-то сразу же скрипт начинает ловить текущий URL и прибавлять к нему значение. В результате чего конечно же получается ошибка.
Как сделать так, чтобы драйвер получал текущий URL именно в тот момент теста,когда мне нужно и уже после этого добавляя к нему значение использовал его. А до этого использовал URL из настроек BeforeClass.
Немного разобрался с последовательностью запуска. Пока убрал аннотацию @Test перед каждым тестом, тесты стали методами. А в самом начале прописал такое:
@Test
public void creationTender() {
ownerValidLogin();
createDraftPurchase();
addLot();
}
Теперь последовательность стала такой как нужно. А вот сменить текущий URL все равно не получается.
org.openqa.selenium.WebDriverException: Component returned failure code: 0x804b000a (NS_ERROR_MALFORMED_URI) [nsIWebNavigation.loadURIWithOptions]
Первое. Зачем опираться на getCurrentUrl? А если позже поменяется логика инициализации? Лучше вынести URL в константу и использовать ее как в BeforeClass, так и в специфических тестах.
Второе. Зачем следить, чтоб приписка сохранялась до конца скрипта? Вы же далее по тесту, наверняка, просто переходите по ссылкам, нажимаете кнопки и т.д., а не вызываете driver.get() по нескольку раз. И тем, что сохранится в строке адреса, должен управлять сам тестируемый сайт.