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

jab*_*ett 12 javascript selenium hashchange backbone.js

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

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

似乎Selenium正在侦听只在URL哈希发生更改时才触发的事件.

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

Sas*_*ato 5

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

Command = storeEval
Target = window.location.hash='/search/events/birthdays/1' 
Run Code Online (Sandbox Code Playgroud)

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


jab*_*ett 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())
Run Code Online (Sandbox Code Playgroud)