2013-02-13 22 views
12

Selenium IDEでBackbone.js Webアプリケーションをテストしようとしています。Seleniumを使用してハッシュでURLを開く方法は?

Seleniumは、新しいブラウザウィンドウ(たとえば、ブラウザウィンドウ)内にある限り、テストケースの初期URLを開くことができます。 open /#/login - 後続のURLを開こうとするたびにタイムアウトします。

Seleniumは、URLハッシュだけが変更されたときにトリガされないイベントをリスニングしているようです。

私は、これはあなたがなhashchange +セレンを使用している任意の時間に発生想像

...

+2

を私はこれを提出してきました(http://code.google.com/p/selenium/issues/detail?id=5165&q [バグとして] =アンカー&colspec = ID%20Stars%20Type%20Status%20Priority%20Milestone%20Owner%20Summary)をSeleniumチームに送信します。 – jabbett

+0

私は同じ動作を観察していますが、タイムアウトエラーにもかかわらず、スクリプトが続行します –

+0

私の同様の異なるケースを経験している他の人のメモとして、 'https: // foo.com#bar'。しかし、Selenium **は、ハッシュの後にフォワードスラッシュ( 'https:// foo.com#/ bar')が続くとurlハッシュを受け入れます**。 –

答えて

-1

簡単なアップデート:私たちは、統合テストを書くためにセレンIDEを使用しようとあきらめ、代わりに、セレンのためSelenium Python bindingsを使用WebDriver。

このアプローチでは、URLにナビゲートしてWebDriverWaitを使用して、DOMの特定の変更を検出できます。セレンIDEで

driver = webdriver.Firefox() 
driver.get("/#/login") 
WebDriverWait(driver, 10).until(
    lambda driver: driver.find_element_by_css_selector("form.login").is_displayed()) 
5

単に 'storeEval' コマンドを使用して、例えば:

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

storeEvalはJavascriptを "ターゲット" に割り当てられたスニペットに実行されます。 次に、open(url)コマンドを使用して開始ページを開き、残りのケースでstoreEvalコマンドを使用してハッシュを変更するテストケースが1つあります。

1

デベロッパーツールのコンソールでこれを実行します - >window.location.hash='#abcde'。ブラウザのタブでハッシュを変更する必要があります。

セレンwebdriverをし、JavaからJavaScriptを実行します。

((JavascriptExecutor) driver).executeScript("window.location.hash='#abcde'"); 
関連する問題