2009-06-03 11 views
2

テキストの後に最初に表示される「Delete」ボタンなど、動的オブジェクトの認識機能(記述的プログラミング)を使用して、 「アイテムXYZ-123」)。テキストとボタンの両方がWebtableの単一の行の中にある場合、私はそれを行うためのクルージングの方法を持っていますが、私はよりエレガントで信頼性の高いソリューション(うまくいけばテーブルに依存しないもの)を望んでいました。Quicktest Pro - テキストの一致後に最初のボタンを見つけよう

ドキュメンテーションでは、.Objectプロパティがfirefox内ではなくIE内でテストするときにDOMオブジェクトだけを返すと主張しているので、.Objectプロパティを使用しない方がよいでしょう。

ありがとうございます!

+1

WebElement( "html tag:= TR ...")。WebButton( "value:= Delete")?あなたのkludgeがBrowser()の行に沿っていると思いますか?私は実際にこれが物事を行うための素晴らしい論理的方法だと思っています。それはFirefox上ではうまくいかないようです。それに失敗すると、私は以下のモッティの解決策は妥当だと思う。 .Objectを使用しない場合:多くの回避策を使用してFFで同様の機能を実現することはできますが、必然的に重要でない限り、FFスクリプティングの矛盾をすべて克服するよりも、 QTPで – Xiaofu

答えて

1

sourceIndex属性を使用する解決策は、sourceIndexはIEのみのプロパティですが、QTPはFirefoxでそれをシミュレートするので、同じスクリプトが両方のブラウザで機能することに注意してください。 source_indexが請求書に適合しない場合は、abs_xabs_yのような座標ベースのプロパティを使用することができます。

一般的な機能にそれを作ることは読者の課題として残して、尋ねたとして、質問を答えを次のコード; 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 

もの:

  • これは、要素のテキスト全体であることがわかっている場合は、.*を削除したり、パフォーマンスを向上させるために「htmlタグ」を追加することができます。私たちが説明に合う最後の要素を取る理由は、最初の要素は、我々があるため、デフォルトでは「micclass」=「WebElement」を指定する必要がテキストの説明ではBODYなど
  • なります
    • ChildObjectは、それらが不愉快であると仮定して、WebElementをフィルタリングします。
  • +0

    ありがとう!これは完璧です。 –

    1

    簡単な方法がないと仮定して、HTMLの解析を試みることができます。 HTML内の検索テキストを見つけて、その時点以降のHTMLから「削除」ボタンを探し始める。あなたは、記述的なプログラミングに使用できるHTMLからIDまたはその他の識別プロパティを取得できます。

    詳細を表示するために見られるサンプルのHTMLとQTPコードがありますか?おそらくもっと簡単な方法があります。

    0

    最初に質問を言い換えてください。

    行番号が不明で行を見つけるための一意のキー値がある場合、WebTableに含まれるオブジェクトへの参照を取得するにはどうすればよいですか?

    これは、ボタン、チェックボックス、コンボボックスその他の表のオブジェクトに適用されます。

    実装。

    1)行を検索

    intRow = objWebTableGetRowWithCellText(sKeyValueText、 "アイテム") 名前または番号

    2で列を指定することができます)子オブジェクト

    設定objButton = objWebTable.ChildItem(intRow、INTCOL、 "WebButton" 盗ん、0) することができます列を番号でのみ指定します。最後のパラメータは、同じセルに複数のボタンがある場合に有効になります。

    ブログ(http://automationbeyond.wordpress.com/)の他の技術例を確認してください。

    +0

    これは必ずしもテーブル内にある必要はありませんが、それは一般的な期待です。また、適切なテーブルを見つけることは、可変数のテーブルを示す動的ページ上の問題かもしれません。私は一般化されたソリューションを探していますので、テーブルのオブジェクトを最初に探すのは理にかなっていますが、場合によってはテーブルの外を見ている可能性があります。 –

    +0

    テーブルにhtml idプロパティ(1ページあたりの価値が一意です)が定義されています。この場合、テーブルの識別に問題はありません。 全体的に、あなたが実際にという信頼できる一般化されたソリューションを、あなたが探しているテキスト/ボタンの文脈が重要であるので、適切なテーブルを特定することなく実現できることを心配しています。あなたのスクリプトが間違ったテーブルに正しいテキストを見つけ、それをPASSとして報告するならば、それは価値があります。 –

    関連する問題