2

動的オブジェクト認識 (記述的プログラミング) を使用して、特定のテキストの後に表示される「削除」というラベルの付いた最初のボタン (たとえば、テキスト「アイテム XYZ-123」の後に表示される最初の削除ボタン) を見つけたいと考えています。テキストとボタンの両方が webtable の 1 つの行内にある場合、私はそれを行うための厄介な方法を持っていますが、より洗練された、または信頼できる解決策 (できればテーブルに依存しないもの) を望んでいました。

ドキュメントでは、.Object プロパティは IE 内でテストしているときにのみ DOM オブジェクトを返し、Firefox 内では返さないと主張しているため、.Object プロパティの使用は避けたいと思います。

ありがとう!

4

3 に答える 3

1

sourceIndexこれは属性を使用するソリューションです。これsourceIndexはIEのみのプロパティですが、QTPはFirefoxでそれをシミュレートするため、同じスクリプトが両方のブラウザーで機能します。法案に適合しない場合などabs_x、座標ベースのプロパティを使用することを選択できます。abs_ysource_index

次のコードは、尋ねられた質問に答え、それを一般的な関数にすることは、読者のための演習として残されています; o)

''#1. Create description for locator text 
Set textD = Description.Create()
textD("micclass").Value = "WebElement"
textD("innertext").Value = ".*Item XYZ-123.*"

''#2. Find locator sourceIndex
set texts = Browser("B").Page("P").ChildObjects(textD)
Set text = texts(texts.Count-1) ' Take last text '
textIdx = text.GetROProperty("source_index") ' works for FF too '

''#3. Create description for button 
Set buttonD = Description.Create()
buttonD("micclass").Value = "WebButton"
buttonD("value").Value = "Delete"
Set btns = Browser("B").Page("P").ChildObjects(buttonD)

''#4. Find first button after locator text 
For i = 0 To btns.Count
    If btns(i).GetROProperty("source_index") > textIdx Then
        btns(i).Click ' Or whatever you want to do with it '
        Exit For
    End If
Next

このソリューションに関する注意事項:

  • テキストを含む要素については何も想定していません。これが要素内のテキスト全体であることがわかっている場合は、.*sを削除するか、「htmlタグ」を追加してパフォーマンスを大幅に向上させることができます。
    • そのため、説明に一致する最後の要素を取得します。最初の要素はBODYなどになります。
  • テキストの説明では、 "micclass" = "WebElement"を指定する必要があります。これは、デフォルトでは、興味がないと想定しChildObjectてsを除外するためです。WebElement
于 2009-06-07T08:04:14.033 に答える
1

それを行う簡単な方法がないと仮定すると、HTMLを解析してみることができます。HTMLで検索テキストを検索し、その時点からHTMLで[削除]ボタンの検索を開始します。記述的プログラミングに使用できるHTMLからIDまたはその他の識別プロパティを取得できる必要があります。

詳細を確認するために確認できるサンプルHTMLおよびQTPコードはありますか?おそらくもっと簡単な方法があります。

于 2009-06-04T14:22:37.207 に答える