QTP自伝の記述的プログラミング

32438 ワード

記述的プログラミング、すなわち、オブジェクトを記述的な言語で位置決めし、事前にオブジェクトをオブジェクトライブラリに追加する必要はありません.次に、記述的なプログラミングの使用方法について説明します.オブジェクトライブラリプログラミングのWebページを引き続き使用します.
記述的プログラミングを用いた2つの方法
  • 直接説明
  • オブジェクト(属性名:=属性値、属性名:=属性値...)
    この方法はとてもイメージがよくて覚えやすいです.例えば、人を探しに行くなら、張三と呼んでください.上の公式ではそうです.
    人(「名前:=張三」)
    張三という人が複数いれば、もっと具体的に特徴を説明することができます.
    人(「名前:=張三」、「性別:=男」、「身長:=175 CM」…)
    張三のこれらの特殊なことを言うことで、最終的に私たちは彼を見つけることができます.次は私たちがオブジェクトライブラリプログラミングで使用しているコードです.
    Browser("web    ").Page("web    ").WebEdit("   ").Set "test"
    
    Browser("web    ").Page("web    ").WebEdit("  ").Set "[email protected]"
    
    Browser("web    ").Page("web    ").WebEdit("    ").Set "haha"
     
    記述的なプログラミングで同じ効果が得られるので、ユーザー名にtestが入力されているのではないでしょうか.
    '     
    
    Browser("micClass:=Browser").Page("micClass:=Page").WebEdit("name:=username").Set "test"
    
    Browser("micClass:=Browser").Page("micClass:=Page").WebEdit("name:=mail").Set "[email protected]"
    
    Browser("micClass:=Browser").Page("micClass:=Page").WebEdit("class:=edit","html tag:=TEXTAREA").Set "haha"
     
    注意、個人紹介リッチテキストには2つの属性記述が使用されており、Webソース(ソースが見えないか見えないかSpyツールでオブジェクト属性を表示できます)を使用すると、name属性がなく、ユーザー名とメールボックスのclass属性がeditであることがわかります.位置を特定するには、html tagを選択する一意性の属性を追加する必要があります.
    //       
    
    <div class="content">
    
       <span>   </span><input type="text" name="username" class="edit">
    
    </div>
    
    <div class="content">
    
        <span>  </span><input type="mail" name="mail"  class="edit">
    
    </div>
    
    <div class="content">
    
        <span>    </span><textarea rows="5" cols="20" class="edit"></textarea>
    
    </div>
     
    記述プログラミングでは、上記のコードWebEdit(「class:=edit」,「html tag:=TEXTAREA」)など、記述されたオブジェクトの具体的な用途をコードから直接見ることができない場合がありますが、classとhtml tagの属性で記述されているオブジェクトは分かりませんが、オブジェクトライブラリでプログラミングされているコードWebEdit(「個人紹介」)は、これは個人紹介入力ボックスを設定する値であることを明確に指摘し,これも記述的プログラミングが不足しているところであろう.
  • Descriptionオブジェクトメソッド
  • ダイレクトコード
     1 '     description  
    
     2 '  description  
    
     3 Set obj_browser=description.Create()
    
     4 Set obj_page=description.Create()
    
     5 Set obj_webedit_username=description.Create()
    
     6 Set obj_webedit_mail=description.Create()
    
     7 Set obj_webedit_textarea=description.Create()
    
     8 '     
    
     9 obj_browser("micClass").value="Browser"
    
    10 obj_page("micClass").value="Page"
    
    11 obj_webedit_username("name").value="username"
    
    12 obj_webedit_mail("name").value="mail"
    
    13 obj_webedit_textarea("html tag").value="TEXTAREA"
    
    14 
    
    15 Browser(obj_browser).Page(obj_page).WebEdit(obj_webedit_username).Set "test"
    
    16 Browser(obj_browser).Page(obj_page).WebEdit(obj_webedit_mail).Set "[email protected]"
    
    17 Browser(obj_browser).Page(obj_page).WebEdit(obj_webedit_textarea).Set  "haha"
    
    18 
    
    19 '    
    
    20 Set obj_browser=nothing
    
    21 Set obj_page=nothing
    
    22 Set obj_webedit_username=nothing
    
    23 Set obj_webedit_mail=nothing
    
    24 Set obj_webedit_textarea=nothing
     
     
    このように書くのはよさそうですが、同じオブジェクトがたくさんあると面倒になります.100個のWebEditが100個のdescriptionオブジェクトを設定しますか?コードを改善するには、次のようにします.
     1 '     description  
    
     2 '  description  
    
     3 Set obj_browser=description.Create()
    
     4 Set obj_page=description.Create()
    
     5 Set obj_webedit=description.Create()
    
     6 
    
     7 '     
    
     8 obj_browser("micClass").value="Browser"
    
     9 obj_page("micClass").value="Page"
    
    10 obj_webedit("micClass").value="WebEdit"
    
    11 
    
    12 Set obj_webedits=Browser(obj_browser).Page(obj_page).ChildObjects(obj_webedit)
    
    13 
    
    14 obj_webedits.item(0).set "test"
    
    15 obj_webedits.item(1).set "[email protected]"
    
    16 obj_webedits.item(2).set "haha"
    
    17 
    
    18 '    
    
    19 Set obj_browser=nothing
    
    20 Set obj_page=nothing
    
    21 Set obj_webedit=nothing
    
    22 Set obj_webedits=nothing
     
     
    2つの方法はすでに紹介済みで、1つ目の方法は一般的なテスト環境に適用され、2つ目の方法はフレームワークベースのテストに適用され、そのコードの多重性が高いため、具体的な違いは自分で体得することができます.次に、オブジェクトライブラリでプログラミングされたコードを2つの記述的なプログラミング方式で書き換える.
     1 '     description  
    
     2 '  description  
    
     3 Set obj_browser=description.Create()
    
     4 Set obj_page=description.Create()
    
     5 Set obj_webedit=description.Create()
    
     6 Set obj_weblist=description.Create()
    
     7 Set obj_webcheckbox=description.Create()
    
     8 Set obj_webradiogroup=description.Create()
    
     9 Set obj_webbutton=description.Create()
    
    10 Set obj_webtabe=description.Create()
    
    11 
    
    12 '     
    
    13 obj_browser("micClass").value="Browser"
    
    14 obj_page("micClass").value="Page"
    
    15 obj_webedit("micClass").value="WebEdit"
    
    16 obj_weblist("micClass").value="WebList"
    
    17 obj_webcheckbox("micClass").value="WebCheckBox"
    
    18 obj_webradiogroup("micClass").value="WebRadioGroup"
    
    19 obj_webbutton("micClass").value="WebButton"
    
    20 obj_webtabe("micClass").value="WebTable"
    
    21 
    
    22 '    WebEdit  
    
    23 Set obj_webedits=Browser(obj_browser).Page(obj_page).ChildObjects(obj_webedit)
    
    24 obj_webedits.item(0).set "test"
    
    25 obj_webedits.item(1).set "[email protected]"
    
    26 obj_webedits.item(2).set "haha"
    
    27 
    
    28 Browser(obj_browser).Page(obj_page).WebList(obj_weblist).Select "java"
    
    29 
    
    30 '    WebCheckBox  
    
    31 Set obj_webcheckboxs=Browser(obj_browser).Page(obj_page).ChildObjects(obj_webcheckbox)
    
    32 For i=0 to 1
    
    33     obj_webcheckboxs.item(i).set "ON"
    
    34 Next
    
    35 
    
    36 Browser(obj_browser).Page(obj_page).WebRadioGroup(obj_webradiogroup).Select " "
    
    37 Browser(obj_browser).Page(obj_page).WebButton(obj_webbutton).Click
    
    38 
    
    39 '  WebTable      
    
    40 username=Browser(obj_browser).Page(obj_page).WebTable(obj_webtabe).GetCellData(2,1)
    
    41 mail=Browser(obj_browser).Page(obj_page).WebTable(obj_webtabe).GetCellData(2,2)
    
    42 sex=Browser(obj_browser).Page(obj_page).WebTable(obj_webtabe).GetCellData(2,3)
    
    43 
    
    44 If username="test" and mail="[email protected]" and sex=" " Then
    
    45     msgbox "OK"
    
    46 End If
    
    47 '    
    
    48 Set obj_browser=nothing
    
    49 Set obj_page=nothing
    
    50 Set obj_webedit=nothing
    
    51 Set obj_webedits=nothing
    
    52 Set obj_weblist=nothing
    
    53 Set obj_webcheckbox=nothing
    
    54 Set obj_webradiogroup=nothing
    
    55 Set obj_webbutton=nothing
    
    56 Set obj_webcheckboxs=nothing
    
    57 Set obj_webtabe=nothing
    
    58 '           
    
    59 
    
    60 With Browser("micClass:=Browser").Page("micClass:=Page")
    
    61     .WebEdit("name:=username").Set "test"
    
    62     .WebEdit("name:=mail").Set "[email protected]"
    
    63     .WebEdit("class:=edit","html tag:=TEXTAREA").Set "haha"
    
    64     .WebList("micClass:=WebList").Select "java"
    
    65     .WebCheckBox("html id:=film").Set "ON"
    
    66     .WebCheckBox("html id:=game").Set "ON"
    
    67     .WebRadioGroup("micClass:=WebRadioGroup").Select " "
    
    68     .WebButton("name:=  ").Click
    
    69 
    
    70     username=.WebTable("micClass:=WebTable").GetCellData(2,1)
    
    71     mail=.WebTable("micClass:=WebTable").GetCellData(2,2)
    
    72     sex=.WebTable("micClass:=WebTable").GetCellData(2,3)
    
    73 End With
    
    74 
    
    75 If username="test" and mail="[email protected]" and sex=" " Then
    
    76     msgbox "OK"
    
    77 End If
     
    どのように取捨選択するか
  • オブジェクトライブラリプログラミング
  • 1.オブジェクトのプロパティが変更された場合(オブジェクトnameの変更など)、スクリプトではこのオブジェクト(10回、100回)を大量に参照し、オブジェクトライブラリ内のオブジェクトのプロパティを変更するだけでよい.記述的なプログラミングでは、関連するすべてのコードを手動で変更する必要があり、効率が低い.
    2.オブジェクトドラッグ、F 7などで素早くコードを書き、自動的に生成することができ、間違えにくい.
  • 記述的プログラミング
  • 1.膨大なオブジェクトライブラリを維持する必要はありません.
    2.オブジェクトライブラリのプログラミングが完了できない機能(オブジェクトが認識できない場合)
    記述的プログラミングとオブジェクトライブラリプログラミングにはそれぞれメリットとデメリットがあり,誰が良いか悪いかは言えず,適切な時に適切な方法を採用することこそ正理である.
    最良の方法は,オブジェクトが認識できるときはオブジェクトライブラリでプログラミングし,認識できないときは記述的にプログラミングすることである.