12

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

Selenium 可以打开我的测试用例的初始 URL,只要它在一个新的浏览器窗口中——例如open /#/login——但是每当它试图打开后续 URL 时它就会超时。

似乎 Selenium 正在侦听一个仅在 URL 哈希更改时未触发的事件。

我想这会发生在你使用 hashchange + Selenium 的任何时候......

4

3 回答 3

5

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

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

storeEval运行分配给“目标”的 javascript 片段。然后你可以做的是有一个测试用例使用 open(url) 命令打开起始页,其余的用例使用 storeEval 命令更改哈希。

于 2014-03-18T21:15:33.407 回答
1

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

通过 Selenium Webdriver 和 Java 执行 javascript:

((JavascriptExecutor) driver).executeScript("window.location.hash='#abcde'");
于 2014-06-12T17:50:03.570 回答
0

一个简短的更新:我们放弃了尝试使用 Selenium IDE 编写我们的集成测试,而是使用 Selenium WebDriver 的Selenium Python 绑定

使用这种方法,我们可以导航到一个 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())
于 2014-03-13T17:56:47.327 回答