2013-02-13 50 views
12

我想用Selenium IDE測試我的Backbone.js Web應用程序。只要如何使用Selenium使用散列打開URL?

硒能打開我的測試用例的初始URL,因爲它是在一個新的瀏覽器窗口 - 例如open /#/login - 但每當它嘗試打開後續URL時就會超時。

看來,硒被監聽,只是沒有被觸發時,只有URL哈希值發生變化的事件。

我可以想象這種情況,你正在使用hashchange +硒任何時候...

+2

我已經提交了該[作爲一個bug(http://code.google.com/p/selenium/issues/detail?id=5165&q =錨colspec = ID%20Stars%20Type%20Status%20Priority%20Milestone%20Owner%20Summary)與硒團隊。 – jabbett 2013-03-19 14:46:07

+0

我觀察相同的行爲,但儘管超時錯誤,我的腳本會再繼續 – 2013-05-13 15:48:45

+0

作爲一個紙條給任何其他人誰正在經歷我類似但不同的情況下,我不能硒加載一個URL,例如'的https: // foo.com#bar'。但是,如果哈希值後面跟着正斜線即「https:// foo.com#/ bar」,Selenium **將接受網址哈希值。 – 2015-03-31 05:14:38

回答

-1

的最新簡報:我們放棄了使用Selenium IDE來寫我們的集成測試,並代替Selenium Python bindings的硒的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()) 
5

在硒IDE簡單地使用 'storeEval' 命令,例如:

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

storeEval運行JavaScript代碼段分配到 「目標」。 那麼你可以做什麼,是有打開使用open(URL)命令你的情況下,改變使用storeEval命令哈希其餘起始頁,和一個測試用例。 >window.location.hash='#abcde' -

1

上的開發工具的控制檯運行此。它應該在瀏覽器選項卡中爲你更改散列值。

通過硒的webdriver和Java執行JavaScript:

((JavascriptExecutor) driver).executeScript("window.location.hash='#abcde'"); 
相關問題