2012-05-07 9 views
2

2つの異なるブラウザセッションが必要なチャットアプリケーションをテストしようとしています。私は、次の方法でこれを試してみました:Selenium with Pythonの複数のブラウザ

  • は、二つの異なるブラウザ、サイトのホームページを開こうとしたFirefoxやGoogle Chromeの
  • を開始します。続き

コードです:

from selenium import selenium 
from selenium import webdriver 
from threading import Thread 
import unittest, time, re 
import time 


class envolveChatCheck(unittest.TestCase): 

    def get_sauce_browser(self, port=4444, browser="*firefox"): 
     return selenium('localhost', port, browser, 'http://example.com/') 

    def get_browser_and_wait(self, browser, browser_num): 
     print "starting browser %s" % browser_num 
     browser.start() 
     browser.open("/") 
     print "browser %s ready" % browser_num 

    def setUp(self): 
     self.verificationErrors = [] 
     self.b1 = self.get_sauce_browser(browser='*googlechrome', port=4444) 
     self.b2 = self.get_sauce_browser(browser='*firefox', port=4444) 
     print "all browsers ready" 

    def test_envolve_chat_check(self): 
     print "starting b1" 
     self.b1.start() 
     print "starting b2" 
     self.b2.start() 

     print "opening homepage b1" 
     self.b1.open("/") 
     self.b1.wait_for_page_to_load("30000") 

     print "opening homepage b2" 
     self.b2.open("/") 
     self.b2.wait_for_page_to_load("30000") 


    def tearDown(self): 
     self.b1.stop() 
     self.b2.stop() 
     self.assertEqual([], self.verificationErrors) 
if __name__ == "__main__": 
    unittest.main() 

後、私は取得していますエラーです:

Traceback (most recent call last): 
File "envolveChatCheck.py", line 32, in test_envolve_chat_check 
self.b1.open("/") 
File "/usr/local/lib/python2.6/dist-packages/selenium/selenium.py", line 774, in open 
self.do_command("open", [url,ignoreResponseCode]) 
File "/usr/local/lib/python2.6/dist-packages/selenium/selenium.py", line 214, in do_command 
raise Exception, data 
Exception: ERROR: Got a null result 

これについての任意のヒント?

+0

ここで正常に動作します。どのバージョンのSeleniumサーバーを使用していますか?どのバージョンのfirefoxとchromeを使用しますか? – Boud

+0

時々正常に実行されますが、複数回実行するとクラッシュします。 FirefoxとChromeには最新バージョンがあります。 – qasimzee

答えて

5

私の提案は、マルチコンフィグプロジェクトに

  1. ダウンロードを使用してJenkins(Hudson)でスクリプトを実行し、ジェンキンスをインストールすることです。
  2. を管理してください。
  3. 利用可能なプラグイン"Python Plugin"を選択してください。
  4. オプション(私はそれらを効果的に使用haventはかかわらず、様々なセレン特定のプラグインは、同様にあります。あなたはすでにシステム上のセレンを持っていると想定される)
  5. 新しいジョブを作成し、「マルチコンフィギュレーションプロジェクトをビルド」を選択します。
  6. 「構成マトリックス」「軸の追加」をクリックしてください。
  7. 「ユーザー定義軸」を選択します。
  8. "名前" "BROWSERS"のようなAxisのを設定します。
  9. 「値」を、テストするブラウザにスペースで区切って設定します。 例:Firefoxの「インターネットエクスプローラ」クロム
    注:私は確かに、インターネットエクスプローラが
  10. 選択「Pythonの実行「ビルドステップを追加」一つの値
  11. クリックとして扱わされていることを確認するために前後に引用符を置きますPythonのブロック内のスクリプト」

あなたのコードを挿入することができ、ブラウザを引くために、以前の設定値:

#!/usr/bin/python 
import os 
BROWSER = os.getenv('BROWSERS') 

先ほど作成したAxisで定義された値を使用してJenkinsが別々のジョブを作成し、Pythonスクリプトはジョブごとにその値を注入します。

これを他の方法でさらに拡張することができますが、これは少なくともテストケースのロジックに集中し、実行についてはあまり心配する必要はありません。上記の例はLinuxに基づいています。

注:LinuxからIEテストスクリプトを実行するには、WindowsスレーブでSeleniumGridプラグインを使用します。

関連する問題