、ウェブドライバ原理
クライアント/サーバモデルに基づいてwebdriverをクラシックなデザインを設計します。
簡単に言えば:
クライアント側はブラウザをテストするためのHTTPリクエストを送信し、我々のテストスクリプトです。
サーバー側のブラウザは任意で、リモートクライアントサーバーは、リターン実行状態REPONSE、戻り値情報に、に対応し、要求を受信します
-
webdriverを特定のワークフロー:
- ターゲットブラウザを起動して、指定されたポートにバインドwebdriverを。リモートサーバリモートサーバなどのブラウザを起動します
- クライアントは、ポート(:webdriverをワイヤーprotocal通信プロトコルを)聞いてCommandExecuterリモートサーバにHTTP経由でリクエストを送信します
- リモートサーバーリモートサーバー(のような:などIEDriverServer.exe、chromedriver.exe、)ネイティブブラウザのコンポーネントに依存する必要があり、ローカル(ネイティブ)の呼び出しにブラウザに
-
webdriverを、プロトコルを使用しました:
- HTTPプロトコル:あなたは、ブラウザを開くと、
- webdriverをワイヤプロトコル:クライアントは、リモート・サーバの待機ポートにHTTPリクエストを送信します
どこで:
- 有線プロトコルは:ポイントへのポイントからデータを取得する方法を指し、それはアプリケーション層のプロトコルです。
- HTTPプロトコル:サーバーからの送信は、クライアントへのHTMLハイパーテキストマークアップ言語プロトコルです。これは、アプリケーション層プロトコル、リクエスト/レスポンスの構造は、標準のクライアント/サーバモデルです。これは、ステートレスなプロトコルです。(ステートレス:トランザクションの無いメモリ機能は、送信された情報は保存されません-メモリを節約します)
二、操作のwebdriverを一般的な方法と
図1に示すように、測位方法素子
セレンは、標的の8種類を提供します。
上記の方法では、以下の手順を行うには:
- ポジショニングID:HTML文書にHTMLのid属性で指定されたが、独特の市民識別番号に類似し、かつ高度でなければならないユニーク。
- 場所名:要素の名前を指定するには、名前、現在のページの名前の属性値が一意でない場合があります。
- クラスオリエンテーション:クラス指定された要素の名前。
- タグの位置:HTMLの性質は、自然の各要素もタグである上に、タグによって異なる機能を定義することです。タグは、多くの場合、クラスの関数を定義するために使用されているので、そう要素を識別する確率タグは低いです。
- リンクポジショニング:テキストリンクを配置するように設計。要素タグの対の間のテキスト情報要素を配置することによって。
- 部分的なリンクポジショニング:リンクポジショニングを補完する、いくつかのテキストリンクがかなり長いので、限り、あなたは、リンクを一意に識別できるよう、一部のポジショニングを取る考慮に入れて。
時々要素なしのid、name属性、または複数のページ要素のID、同じname属性値、またはページを更新するたびに実際のプロジェクトでは、IDの値は、このような状況のために、ランダムな変化で、次のようにセレン見つけます:
- XPathロケーション:XPathは、XML文書内の要素に対処するための言語です。HTMLはXMLの実装として見ることができます。
- 絶対パスを配置することは絶対パスを検索する要素の階層関係のタグ名を使用し
1 find_element_by_xpath(" / HTML /本体/ DIV / DIV [2] / DIV / DIV / DIV /から/スパン/入力")
- 位置決め要素の属性を使用します:
1 find_element_by_xpath(" //入力[@ ID = 'KW'] " ) 2 find_element_by_xpath(" //入力【名@ = 'WD'] ")
3 find_element_by_xpath( "// * [@ ID = 'KW']" )
- プロパティのレベルに合わせて
1 find_element_by_xpath(" //スパン[クラス@ = 'bg_s_ipt_wr'] /入力" ) 2 find_element_by_xpath(" //フォーム[@ ID = 'FPRM'] /スパン/入力")
- 論理演算子を使用
find_element_by_xpath(" //入力[@ ID = 'KW'と@クラス= 'SU'] /スパン/入力")
- CSSのポジショニング:
- ターゲティングエレメントを使用して:ターゲティング方法の上記8種類に加えて、さらに、測位方法、測位により宣言及び測位方法パラメータ、二つのパラメータ、位置決めの種類に応じ渡す、統一find_elementコール()メソッドを提供する特異的標的道。実際には、根本的には、8つのメソッドの上にあります
find_element(By.ID、「KW」) find_element(By.NAME、「WD」) find_element(By.CLASS_NAME、「s_ipt」) find_element(By.TAG_NAME、「入力」) find_element(By.LINK_TEXT、「新闻」) find_element(By.PARTIAL_LINK_TEXT、「新」) find_element(By.XPATH、" // [@クラス= 'のBG s_btn'] " ) find_element(By.CSS_SELECTOR、" span.bg s_btn_wr>入力#SU ")