Quick Test Pro を使用して、アプリケーション内の特定のオブジェクトを一意に識別できるかどうか疑問に思っています。
たとえば、Web ページに 10 個の OK ボタンがあり、HTML や Javascript で一意の識別子が指定されていない場合、3 番目のボタンをどのように選択すればよいでしょうか?
ご協力いただきありがとうございます。
QTP で index プロパティを使用する必要があります。
3 番目のボタンをクリックする場合は、QTP の settoproperty 関数を使用する必要があります。
'オブジェクト リポジトリでは、インデックス プロパティをオプションの識別子として追加し、最初のボタンに対して '0 に設定する必要があります。あなたが使用できる
Browser("").Page("").Frame("").WebButton("OK").Settoproperty "index", 2
Browser("").Page("").Frame("").WebButton("OK").Click
'3番目のボタンをクリックします。
まず、以下のコードを変更して、すべてのテキストや名前などを出力できます。これにより、GUI スパイが表示しない場合でも、画面上にある一致するすべての項目が表示されます。
これは、スパイが拾えなかった一意の名前を表示することで問題を解決する可能性があります。それを使用してオブジェクトとやり取りすることができますが、それが機能しない場合は、名前を数えてあなたが欲しいものの番号を見つけます
例えば
それが示された場合....
編集
編集
編集
そして、画面に 3 番目の編集ボタンが必要でした。これで、それが、先ほど調べた子のコレクションの 3 番目の項目であることがわかります。この方法で独自のプロパティを取得するか、必要な子の数を数えて取得します。名前、またはテキストなど... (オブジェクトを数えて目的のオブジェクトに到達するのに役立つ GetROProperty を使用するだけです)
これがそのコードです。残りのソリューションのコードを見てください...
'#####################################################################################
'# getObjects()
'# Desc: Change the oPageObject and run this function to return all the text from all
'# visible objects on the screen. This is helpful for getting info on objects
'# that the GUI Spy wont get values for.
'#####################################################################################
Function getObjects()
print "# getObjects"
Set oPageObject = Browser("yourValueHere").Page("yourValueHere").SlvWindow("YourValue")
Set oDesc = Description.Create()
oDesc("slvtypename").Value = "button" ' Set this to the describing feature
Set oChild = oPageObject.ChildObjects(oDesc)
' Counting number of child objects
MyObjCount = oChild.Count
Print MyObjCount
' Looping through child objects, select value in list when criteria is met
For TotalCount = 0 To MyObjCount-1
vName = oChild(TotalCount).GetRoProperty("name")
print vName' output name of objects
Next
End Function
数がわかったら、次のようにコードを変更します... この場合、名前を数えて 2 番目の出現が必要であることがわかり、それをクリックするコードを記述します。
Set oPageObject = Browser("yourValueHere").Page("yourValueHere").SlvWindow("YourValue")
Set oDesc = Description.Create()
oDesc("slvtypename").Value = "button" ' Set this to the describing feature
oChild(2).Click ' see, here we say, click the 2nd child.
私の意見では、これは最後の溝の努力です。これらをさらに追加したり削除したりすると、数が一致しなくなるため、簡単に壊れる可能性がありますが...残っているのがすべてである場合は、それを選択してください.
これは簡単な答えとして説明するのはやや複雑です。これに頼る前に、うまく機能する可能性のある他の多くのことを試すことができるので、詳細についてはお気軽にメールでお問い合わせください。
上記のユーザーが指摘したようなインデックスを使用する際の問題は、特定のオブジェクト タイプのインデックスが常に存在するとは限らないため、すべてのオブジェクト タイプで機能しないことです。