watir-webdriverのあれらの事(3)どのようにページの要素を位置決めします

3389 ワード

機能自動化テストは、ページのコントロール要素を見つけて、これらのコントロールを操作し、人工的なテスト操作をシミュレートすることです.だから、最初はページに配置する要素に違いありません.watir-webdriverは、Webページの要素を特定するための複数の方法を提供します.
 
一般的な位置決め方法は次のとおりです.
 
 
:id                => 'id',
:name              => 'name',
:class             => 'class name',
:class_name        => 'class name',
:link              => 'link text',
:link_text         => 'link text',
:partial_link_text => 'partial link text',
:xpath             => 'xpath',

 
現在webdriverではcssの方法はサポートされていませんが、正直これはあまり使われていません.

idによる位置決め


 
たとえば、次のコントロールについて
 
<input type="text" class="s_ipt" maxlength="100" id="kw" name="wd" autocomplete="off">

IDの位置決めを行い、このように書くことができます
 
b.text_field(:id=>"kw").set "rex"

idは一般的に唯一の表示であり、重複はないので、できるだけidを使用して位置決めします.
 

nameによる位置決め


 
やはりこの例を使います
 
<input type="text" class="s_ipt" maxlength="100" id="kw" name="wd" autocomplete="off">

nameを使用して位置決めすると、このように書かれています.
 
 
b.text_field(:name=>"wd").set "rex"

nameは重複する可能性があります.場合によっては、index=>1を追加して一意に位置決めします.
 

classまたはclass_の使用nameの位置決め


同じ例
 
<input type="text" class="s_ipt" maxlength="100" id="kw" name="wd" autocomplete="off">

classまたはclass_の使用nameの位置付けは、このように書かれています
 
b.text_field(:class=>"s_ipt").html

 

XPathによる位置決め


 
 
同じ例
 
<input type="text" class="s_ipt" maxlength="100" id="kw" name="wd" autocomplete="off">

XPathを使用して位置決めし、このように書きます.
 
 
b.text_field(:xpath=>'//*[@id="kw"]').html
 
 
しかし、私が最初の文章で紹介したように、xpathは使えますが、コードは非常に醜く見えます.実際の使用中は、xpathで要素を位置決めするのは避けたほうがいいです.
 

他の方法で位置決め


linkオブジェクトを配置するときにlinkとlink_を使用できます.textプロパティ;またtag_を使用することもできますnameプロパティは任意の要素を位置決めします. 

複数の位置決め方式を同時に使用


多くの場合、1つの位置決め方式では一意の要素を完全に位置決めすることができず、複数の位置決め方式を総合的に使用する必要がある.例えば、2つのnameがそっくりなコントロールがあり、indexでしか識別できない.以下の
b.button(:name=>"a",:index=>0).click
のように、位置決めnameをaの最初の要素とする(ここで注意:incexはwatir-webdriverでは0から始まり、Watirでは1から始まる).この書き方は,name適合もindex適合という関係にあるといえる.时には、名前やIDが同じであれば、XPathを書くことができますが、existsを利用することもできますか?判断をしますが、コードはブスに見えるので、必要なときに使いましょう.

階層関係の位置付けの使用

<span id="news">
    <input type="text" />
</span>
この場合、多くのフロントコンポーネントを使用するページでよく見かけるかもしれませんが、上記の方法で位置を特定すると、idがなく、nameがなく、全体的に多くのinputがあり、単純にindexを使用するのは苦痛です.このときは階層管理がよくなります.次の
b.span(:id=>"news").text_field(:index=>0).set "rex"
のように、ページコントロールを探すのが安定し、効率が高くなります.テクニックでもあります.