如何使用Selenium打开带有哈希的URL?

时间:2013-02-13 19:53:50

标签: javascript backbone.js selenium hashchange

我正在尝试使用Selenium IDE测试我的Backbone.js Web应用程序。

Selenium可以打开我的测试用例的初始URL,只要它在新的浏览器窗口中 - 例如open /#/login - 但只要它尝试打开后续网址,它就会超时。

似乎Selenium正在侦听只在URL哈希发生变化时才触发的事件。

我想这会在你使用hashchange + Selenium时发生......

3 个答案:

答案 0 :(得分:5)

在Selenium IDE中,只需使用' storeEval'命令,例如:

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

storeEval 运行分配给" target"的javascript片段。 您可以做的是,有一个测试用例使用open(url)命令打开起始页面,其余的情况使用storeEval命令更改散列。

答案 1 :(得分:1)

在开发者工具的控制台上运行 - > window.location.hash='#abcde'。它应该在浏览器选项卡中为您更改哈希值。

通过Selenium Webdriver和Java执行javascript:

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

答案 2 :(得分:0)

简要更新:我们放弃尝试使用Selenium IDE编写集成测试,而是将Selenium Python bindings用于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())