我正在尝试使用Selenium IDE测试我的Backbone.js Web应用程序。
Selenium可以打开我的测试用例的初始URL,只要它在新的浏览器窗口中 - 例如open /#/login
- 但只要它尝试打开后续网址,它就会超时。
似乎Selenium正在侦听只在URL哈希发生变化时才触发的事件。
我想这会在你使用hashchange + Selenium时发生......
答案 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())