2

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

  • 2 つの異なるブラウザー、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

これについてのヒントはありますか?

4

1 に答える 1

5

私の提案は、マルチ構成プロジェクトを使用してJenkins(Hudson)でスクリプトを実行することです

  1. Jenkinsをダウンロードしてインストールします。
  2. プラグインの管理に移動します。
  3. [利用可能なプラグイン]で[ Python プラグイン]を選択します。
  4. オプション (さまざまな Selenium 固有のプラグインもありますが、効果的に使用したことはありません。システムに Selenium が既にあると仮定します)
  5. 新しいジョブを作成し、[マルチ構成プロジェクトのビルド]を選択します。
  6. 「構成マトリックス」という見出しの下で、「軸の追加」をクリックします。
  7. 「ユーザー定義軸」を選択します。
  8. Axis の"Name"を"BROWSERS"のように設定します。
  9. 「値」を、テストするブラウザをスペースで区切って設定します。 例: firefox "internet explorer" chrome
    注: Internet Explorer が 1 つの値として扱われるように引用符を付けました
  10. 「ビルドステップを追加」をクリック
  11. 「Pythonスクリプトを実行」を選択

Python ブロックでは、コードを挿入して、以前に設定したブラウザーの値を取得できます。

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

何が起こるかというと、Jenkins は以前に作成した Axis で定義された値を使用して個別のジョブを作成し、Python スクリプトには各ジョブにその値が注入されます。

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

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

于 2013-04-04T18:39:55.680 に答える