Как открыть 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'");