2017-08-30 18 views
0

firefox用のセレンのwebdriverを使用する一連のテストがあります。ローカルホストとリモートサーバーを切り替えるために実行されている現在の環境を確認したいと書いたスクリプトがあります。これを達成する最良の方法は何ですか?セレンを使用して、それが実行されている環境に基づいてローカル環境からリモートに切り替えるPythonスクリプト

def setUp(self): 
    self.driver = webdriver.Remote(command_executor='http://localhost:4444/wd/hub', 
            desired_capabilities=DesiredCapabilities.FIREFOX) #remote-server or localhost 

リモートサーバーがLinuxの場合は、Windows環境を使用してローカルでテストしています。

ます。http:// localhostを:HTTPへ4444/WD /ハブ:// リモート・サーバ:4444/WD /ハブ

私はそれに対してチェックできる変数はの交換を行うことができます彼らのシステムであり、

これは私のワークフローを改善し、ソースコントロールとの間でコミットするたびにこの変数を切り替えることを心配せずに済みます。提案していただきありがとうございます!

答えて

0

これを行うには多くの方法は、例えば、あなたがあなたのサーバーのホスト名をチェックし、応じて、URLを変更する可能性があります:

import socket 
server_hostname = 'MyServer' 

if socket.gethostname() == server_hostname: 
    #Remote environment 
else: 
    #Local environment  
+0

残念ながら、私はこれに取り組んでいるだけではありません。ただし、リモートホスト名が変更されない場合は、同様のロジックを使用してリモートホスト名と照合することができます。そうでない場合は、デフォルトのlocalhostを使用できます。右の音ですか? – mklemos

+0

はい、あなたは正しいです。サーバーのホスト名を使用する方がはるかに意味があります。私は答えを更新し、あまりにも入力ミスを修正;) – Isma

+0

これを手伝ってくれてありがとう。 – mklemos

0

もう一つの方法は、あなたが指すことができ、システム環境変数を持っているだろうデフォルトでリモートサーバーに送信しますが、定義されている場合は代替サーバー(たとえばlocalhost)をポイントできます。

だから、あなたのローカル環境でシステム環境変数を定義する「MY_SERVER_HOST」、そして、あなたのコードを使用している:

my_server_host = os.getenv("MY_SERVER_HOST", "remote-server") 

ENVが設定されていない任意の環境で実行した場合、それが使用しますそのリモートサーバー。

これにより、どこでも上書きできます。

PS:プロパティファイルがどこかにある場合は、リモートサーバーのデフォルト値を保存するのに適しています。

PPS:複数の可能なリモートサーバーがある場合は、この方法とデフォルトのlocalhostを反転し、他のマシンでenv varを使用してターゲットホストを指定できます。

関連する問題