Как открыть URL с хешем, используя Selenium?

Я пытаюсь протестировать мое веб-приложение Backbone.js с помощью Selenium IDE.

Selenium может открыть исходный URL-адрес тестового примера, пока он находится в новом окне браузера. open /#/login - но он истекает всякий раз, когда он пытается открыть последующие URL-адреса.

Кажется, что Selenium слушает событие, которое просто не запускается, когда изменяется только хеш URL.

Я бы предположил, что это происходит в любое время, когда вы используете hashchange + Selenium...

Ответ 1

Краткое описание: Мы отказались от использования Selenium IDE для написания наших тестов интеграции и вместо этого использовали привязки Selenium Python для Selenium WebDriver.

При таком подходе мы можем перейти к URL-адресу, а затем использовать WebDriverWait для обнаружения конкретного изменения в DOM, например.

driver = webdriver.Firefox()
driver.get("/#/login")
WebDriverWait(driver, 10).until(
    lambda driver: driver.find_element_by_css_selector("form.login").is_displayed())

Ответ 2

В Selenium IDE просто используйте команду "storeEval", например:

Command = storeEval
Target = window.location.hash='/search/events/birthdays/1' 

storeEval запускает фрагмент javascript, присвоенный "target". То, что вы можете сделать, - это один тестовый пример, который открывает стартовую страницу с помощью команды open (url), а остальные ваши случаи изменяют хэш с помощью команды storeEval.

Ответ 3

Запустите это на консоли разработчика → window.location.hash='#abcde'. Он должен изменить хэш для вас на вкладке браузера.

Выполнить javascript через Selenium Webdriver и Java:

((JavascriptExecutor) driver).executeScript("window.location.hash='#abcde'");