自動テストにPythonSeleniumを使用する
- PC、H5での実行をサポートし、エージェントはインターフェイスデータの取得、ヘッドレスモード、レポート(スクリーンショットを含む)の生成、電子メールの送信などを行います。
クイックスタート
-
グローバル構成をコピーして変更します。
cp config.example.yaml config.yaml
このファイルはグローバル構成です。configディレクトリ内のファイルはこの構成を上書きできます -
使用:、
python test.py filename
filenameは、プロジェクトのconfigディレクトリ内のファイル名です。たとえばpython3 test.py default
、ファイル名
が入力されていない場合は、デフォルトで使用されます。default.yaml
-
テストケースはYAMLの一般的な形式で記述されています。詳細については、YAMLの例を参照してください。
-
既存のユースケースを実行します
python3 test.py default,test1
。Baiduを開いて「stingbopystest」を検索し、githubディレクトリにジャンプして、最後に指定されたプロジェクトを開きます。
その他のコマンド
-
configディレクトリ内のすべてのユースケースを表示します。
python3 test.py ls
-
複数のテストケースを同時に実行します。
python3 test.py test1,test2,test3
-
configディレクトリ内のすべてのテストケースを実行します。
python3 test.py all_test
頼る
-
Pythonにはバージョン3.7以降が必要です
-
HTMLTestRunnerに従ってテストレポートを生成します。レポートディレクトリはレポートです。
-
WebDriver、ドライバーのダウンロードアドレスをインストールします。
別の方法:Chromium / Chromeドライバーは壁を越えて、ミラーアドレスを添付する必要があります。 -
BrowserMobプロキシをインストールしてプロキシを監視および使用し、インターフェイスデータの使用を容易にします
使用説明書
-
フレームワーク操作ロジック:
- 構成の取得、構成アイテムのマージ、ブラウザーの起動
- wait_disappear消えるのを待つように設定するかどうか
- iframeはiframeを切り替えるように構成されています
- ロードの待機を構成するかどうかを待つ
- リスナーがリッスンするように構成されているかどうかに関係なく、構成はリッスンを開くことです
- タイプ、コンテンツ、インデックスに従って要素を検索します
- javascriptが構成されているかどうか、構成されている場合は、javascriptを実行します
- アクションに基づいてアクションを実行する
-
設定ファイルは以下の内容に分かれており、フォーマットの説明は以下のとおりです。
-
DEBUG:ブール値
True/False
、、デバッグモードをオンにするかどうか、True-レポートは生成されず、デバッグが簡単です
IMAGE:ブール値、、True/False
スクリーンショットを撮るかどうか、DEBUGはFalse、IMAGEはTrueに設定されてスクリーンショットを撮ります -
メール:メール設定。設定が正しければ、テストケース実行レポートが送信されます
-
BROWSER、ブラウザレイヤーの設定
type:文字列、使用されているブラウザのタイプ、現在サポートされている
Chrome/Firefox
bmp_path:文字列、
browsermob_proxy
アドレス、プロキシの使用、APIリクエストの使用へのアクセスプロキシ:ブール値、、プロキシ
True/False
を開くかどうかh5:ブール値、、
True/False
テストにh5を使用するかどうか、ブラウザを開くかどうかdevice_name:文字列、h5モードでシミュレートされたデバイスの名前、現在Chromeでのみ有効、Firefoxによって実装される戦略は、user_agentを変更し、ブラウザーインターフェイスのサイズを設定することです。
ヘッドレス:ブール値、
True/False
ヘッドレスモードを開くかどうか、インターフェイステストなし、サーバーの自動展開に簡単に統合 -
WEBSITE、スタートページ設定
url:文字列、開始ページアドレス、現在この構成のみが利用可能です
-
メニュー、テストケースの詳細
キー:文字列、メニューパス
名前:文字列、メニュー名/機能名、ユーザーが構成を表示して使用するのに便利
タイプ:文字列、要素を見つける方法、webdriverによって提供されるものと一致する
content:string、上記のタイプは要素の検索に使用されるコンテンツに対応し、一度は検索でき、一部のパスは一度は検索できません(絶対パスではなく、一般的なルールを参照)、コンテンツが使用されます。構成されている場合なしの場合、現在は実行されません。構成ステップ7は、要素の後続のプロセスを検出しますが、他の構成を実行し続けます。
内容:配列、要素を複数回検索することで使用される内容
index:整数、複数の要素が存在する可能性があります。indexを使用して1つを修正します。-1はデフォルトを意味し、-2はすべて、0以上を意味し、リストの添え字を意味します。
操作:配列、アクションの前に実行する操作、配列タイプ、形式は上記と同じです
アクション:文字列、アクションが実行される
。1.どれも:JavaScriptのオプションが設定されている場合はなしとして設定は、何もタスク操作は、実行されないアクションを実行する最後のものであるので、Javascriptを、要素上で実行される
オープン2を:クリックと同様にメニューを開きますが、判定フラグを設定し、現在クラス判定を実現しているオープン設定項目を追加できます。このクラスがある場合はクリックされません。目的は特定のメニューを防ぐことです。開いてからクリックすると閉じ
ます3.クリック:
要素をクリックします4. moveToClick:ターゲット要素に移動して要素をクリックします
5. sendKeys:入力できる値を入力します。詳細については以下の値を参照してください
5. modifyKeys:sendKeysと同じですが、最初にクリアされる点が異なります
。詳細については、以下の値を参照してください。6。upload :upload、valueはアップロードされたファイルのアドレスです。value:string、アクションがsendKeys(input)/ modifyKeys(modify)の場合、valueが必要であり、valueはpkgpath:utils.util.Util:randstr:6(from utils.util import Util)などのカスタムメソッドを使用できます。 && Util .randstr(6))、他のカスタムメソッドについてはutils / utilを参照してください
javascript:文字列、「arguments [0] .scrollIntoView();」などのjavascriptコードは、現在、単純なjavascriptコード操作をサポートしています。現在の構成アイテムが複数の要素に対して取得されている場合、複雑なものは自分で変更する必要があります。 javascriptが実行されます
リスナー:配列、監視する必要のあるapi urlと返されるコード、リスナーを使用するためにBrowserMobプロキシをインストールする必要があり、正しいアプリケーションパスを構成する必要があります
iframe:文字列、iframeのIDまたは名前。構成後、対応するiframeレイヤーへの切り替えが実行されます。構成が空の場合、現在のiframeレイヤーに残るか、切り替え操作は実行されません。構成なしの場合、対応するiframeレイヤーに戻ります。
wait:オブジェクト、要素が表示されるのを待つなど、タイプとコンテンツ(意味は上記と同じ)を含む、ロードを待機している要素
wait_disappear:オブジェクト、消えるのを待っている要素、タイプとコンテンツ(上記と同じ意味)を含みます(マスクレイヤーの消えるのを待つなど)
wait_time:数値、特定のアクションの固定待機時間を秒単位で指定します
-
TEST、array、実行する特定のテストケースを指定します。
testa2
それ以上submenu
ある場合は、自動的に取得して実行します。複数のファイルのTEST
構成を
組み合わせて実行します。実行の順序は、テスト時の名前の順序です。ケースが入力されますTEST: - login - testa.testa1.testa2 - testb.testb1.testb2 - testc.testc1
-
YAMLの例
DEBUG: True/False #是否开启调试模式,True-不生成生成报告,方便调试
IMAGE: True/False #是否截图,DEBUG为False且IMAGE设置为True时截图
MAIL:
SEND: True/False
# 邮箱服务端配置
SMTP:
username: [email protected]
password: xxxxxxxxxx
host: smtp.163.com
port: 25
# 收件人列表
receiver:
- [email protected]
- [email protected]
BROWSER:
#浏览器类型
type: Chrome/Firefox
#bmp程序路径
bmp_path: your/browsermob-proxy/path
#是否开启代理,开启后,配置listener的操作,会记录请求日志到logs目录下
proxy: True/False
#H5
H5: True/False
#模拟的设备名称,目前只有在Chrome下生效,Firefox实现的策略是修改user_agent并设置浏览器界面大小
device_name: iPhone 7
#是否开启无头模式
headless: True/False
WEBSITE:
#启动页地址
url: http://www.your_website_url.com
MENU:
login:
key: login
name: 登录
type: xpath
content: //button[@class='btn btn-primary' and text()='登录']
index: -1
action: click
listener:
-
url: login/url
code: 0
operation:
-
name: 用户名
type: tag name
content: input
value: xxxxx
index: 2
action: sendKeys
-
name: 密码
type: tag name
content: input
value: xxxxx
index: 3
action: sendKeys
総括する
-
コンテンツを使用して要素を複数回取得する場合は、最後の範囲の要素を取得し、。//(ドット+ダブルスラッシュ)を使用します
-
クラスマッチングを使用する場合、クラスにスペースがある場合は、xpathを構成するときにそれらも含めるか、containsを使用する必要があります。
-
前commit.sampleプロジェクトファイルGitのフックで、
cp pre-commit.sample .git/hooks/pre-commit
、
依存yapf
およびpyflakes
フォーマット検出Pythonコードの構文については、 -
使用例は基本的にconfigディレクトリのファイルにあります。ご利用をよろしくお願いします。ご質問やご提案がございましたら、問題を送信してください。