silktest 2010 における xpath によるダイレクトオブ …...

14
2010 Micro Focus K.K. All Rights Reserved SilkTest 2010 における XPATH によるダイレクトオブジェクト認識 )当資料は、SilkTest 2010 R1(英語版)の Open Agent 用に作成されております。 その他のバージョンや Classic Agent では、画面構成や使用できる機能、動作環境 が異なります。 マイクロフォーカス 株式会社 Application Management & Quality

Upload: phamlien

Post on 24-May-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SilkTest 2010 における XPATH によるダイレクトオブ … では、ツリー構造で管理するオブジェクト情報を、親から順番に現在位置を変えな

2010 Micro Focus K.K. All Rights Reserved

SilkTest 2010 における XPATH によるダイレクトオブジェクト認識

※)当資料は、SilkTest 2010 R1(英語版)の Open Agent 用に作成されております。

その他のバージョンや Classic Agent では、画面構成や使用できる機能、動作環境

が異なります。

マイクロフォーカス 株式会社

Application Management & Quality

Page 2: SilkTest 2010 における XPATH によるダイレクトオブ … では、ツリー構造で管理するオブジェクト情報を、親から順番に現在位置を変えな

2

2010 Micro Focus K.K. All Rights Reserved

目次

1 概要 ................................................................................................................................................. 3

2 SilkTest における XPATH の活用 ................................................................................................... 4

2.1 位置指定記号 ............................................................................................................................ 6

2.2 オブジェクトの種類 ................................................................................................................. 8

2.3 オブジェクトの特定 ................................................................................................................. 9

3 XPATH によるオブジェクト記述サンプル ................................................................................... 10

3.1 x列、y行のオブジェクトを指定する ...................................................................................11

3.2 ‘合計’列、y行のオブジェクトを指定する ....................................................................... 12

3.3 指定したタイトルの行を探して、‘合計’列を指定する ....................................................... 13

Page 3: SilkTest 2010 における XPATH によるダイレクトオブ … では、ツリー構造で管理するオブジェクト情報を、親から順番に現在位置を変えな

3

2010 Micro Focus K.K. All Rights Reserved

1 概要

SilkTest は、アプリケーションの GUI 操作を記録・再生することによって、機能テストを自

動化するツールです。テスト実行時に対象のオブジェクトを認識する方法として「XPATH によ

るダイナミックオブジェクト認識」を採用しており、汎用性のあるスクリプトを作成することが

可能です。

特に、テストスクリプトをデータドリブン形式で繰り返し実行する時や、画面の変更に自動的

に対応出来るようにする時に、XPATH の記述方法を理解しておくと効果的です。

この資料では、SilkTest で使用している XPATH によるオブジェクトの指定方法に関して記述

しています。

*)XPATH の定義に関しては、以下の URL を参照下さい。

http://www.w3.org/TR/xpath20/

SilkTest では、テストスクリプトとして VisualTest, VB.NET, C#, Java などの様々な言語を選択す

ることが出来ますが、オブジェクトを指定する記述方法には、共通で XPATH を使用します。

「図 1-1」のように、オブジェクト種類とプロパティの指定によって、画面上にある複数のオブジ

ェクトから、操作対象のオブジェクトを特定することが出来ます。

図 1-1 XPATH によるオブジェクト指定

" /BrowserWindow//Shell[@caption='SWT Test Application'] "

位置指定記号 オブジェクト種類

プロパティによる オブジェクトの指定

Page 4: SilkTest 2010 における XPATH によるダイレクトオブ … では、ツリー構造で管理するオブジェクト情報を、親から順番に現在位置を変えな

4

2010 Micro Focus K.K. All Rights Reserved

2 SilkTest における XPATH の活用

例えば、テスト対象のアプリケーションが「図 2-1」のような構成の場合、SilkTest は、画面

上のオブジェクトが「図 2-2」のように配置されていると認識します。

図 2-1 テスト対象画面の例

図 2-2 テスト対象画面のオブジェクト配置サンプル

※)「図 2-2」はオブジェクト配置のイメージを表すものであり、全てのオブジェクトを記述し

ているものではありません。

BrowserWindow

TD[2]

TD[3]

TD[4]

TD[5]

TD[1]

TR[1]

TD[2]

TD[3]

TD[4]

TD[5]

TD[1]

TR[2]

Table

Page 5: SilkTest 2010 における XPATH によるダイレクトオブ … では、ツリー構造で管理するオブジェクト情報を、親から順番に現在位置を変えな

5

2010 Micro Focus K.K. All Rights Reserved

対象のアプリケーションに配置されているオブジェクトは、「図 2-3」のようにツリー構造で管

理され、親オブジェクトから順番に指定していきます。

例えば、XPATH で“/BrowserWindow/TABLE/TR/TD”と指定した場合、①~④の順番でツ

リー構造をたどり、オブジェクトを選択していきます。

図 2-3 XPATH のツリー構造と現在位置

BrowserWindow

TABLE

TR

TD

・・・

・・・

・・・

・・・

・・・ ・・・

/BrowserWindow/TABLE/TR/TD

/BrowserWindow/TABLE/TR/TD

/BrowserWindow/TABLE/TR/TD

/BrowserWindow/TABLE/TR/TD

・・・

Page 6: SilkTest 2010 における XPATH によるダイレクトオブ … では、ツリー構造で管理するオブジェクト情報を、親から順番に現在位置を変えな

6

2010 Micro Focus K.K. All Rights Reserved

2.1 位置指定記号

XPATH では、ツリー構造で管理するオブジェクト情報を、親から順番に現在位置を変えな

がら検索します。階層構造になったオブジェクトを検索するため、その現在位置を示すための

位置指定記号を使用します。

説明 記号

現在位置の直下にあるオブジェクト /

現在位置の下にある全てのオブジェクト //

現在位置の一つ上にあるオブジェクト //..

No 使用方法説明

① /BrowserWindow/Table と指定する場合は、BrowserWindow の直下にある Table だけが選択されます。

BrowserWindow の下に Div があり、その下に Tableがある場合は選択されません。

② /BrowserWindow//Table と指定する場合は、BrowserWindow の下にある全ての Table が選択されます。

③ /BrowserWindow/DIV/TABLE/TR/A[@textContext=’TitleB’]の位置にあるオブジェクトは、間のオブ

ジェクトを省略して、/BrowserWindow//A[@textContext=’TitleB’]と表すことが出来ます。

図 2-4 位置指定記号によるオブジェクトの指定方法①~③

BrowserWindow

TABLE

TR

A[@textContext=’TitleA’]

DIV

・・・

・・・

/BrowserWindow/TABLE

TABLE

TR

/BrowserWindow//TABLE

A[@textContext=’TitleB’]

/BrowserWindow/DIV/TABLE/TR/A[@textContext=’TitleB’] もしくは /BrowserWindow//A[@textContext=’TitleB’]

A[@textContext=’TitleA’]

Page 7: SilkTest 2010 における XPATH によるダイレクトオブ … では、ツリー構造で管理するオブジェクト情報を、親から順番に現在位置を変えな

7

2010 Micro Focus K.K. All Rights Reserved

④ /BrowserWindow//A[@textContext=’TitleB’]/../ A[@textContext=’TitleA’]の指定は、まず[@textContext=’TitleB’]のオブジェクトを検索し、その親オジェクトに戻ってから、再度直下のオブジェクトを選択しています。

図 2-5 位置指定記号によるオブジェクトの指定方法④

BrowserWindow

DIV

TABLE

TR

A[@textContext=’TitleB’]

A[@textContext=’TitleA’]

・・・

BrowserWindow

DIV

TABLE

TR

A[@textContext=’TitleB’]

A[@textContext=’TitleA’] ・・・

BrowserWindow

DIV

TABLE

TR

A[@textContext=’TitleB’]

A[@textContext=’TitleA’]

・・・

/BrowserWindow//A[@textContext=’TitleB’] →一旦、オブジェクトを特定します

/ A[@textContext=’TitleA’] →現在位置からの相対指定で、目的のオブジェクトに到達します

/.. →ツリー構造の一つ親に移動します

Page 8: SilkTest 2010 における XPATH によるダイレクトオブ … では、ツリー構造で管理するオブジェクト情報を、親から順番に現在位置を変えな

8

2010 Micro Focus K.K. All Rights Reserved

2.2 オブジェクトの種類

オブジェクトの種類を選択するには、オブジェクト名を指定します。オブジェクト名にはワ

イルドカードを指定することも可能です。

種類 例 説明

オブジェクト名の直接指定 DomElement オブジェクト’DomElement’を指定

ワイルドカード指定 * 全ての種類のオブジェクトを指定

一部分のワイルドカード指定 Dom* Dom から始まる名前のオブジェクトを指定

BrowserWindow

DomTable

DomTextField

・・・

・・・

DomListBox

MyObject

/BrowserWindow/*

BrowserWindow

DomTable

DomTextField

・・・

・・・

DomListBox

MyObject

BrowserWindow

DomTable

DomTextField

・・・

・・・

DomListBox

MyObject

/BrowserWindow/DomTable

/BrowserWindow/Dom*

Page 9: SilkTest 2010 における XPATH によるダイレクトオブ … では、ツリー構造で管理するオブジェクト情報を、親から順番に現在位置を変えな

9

2010 Micro Focus K.K. All Rights Reserved

2.3 オブジェクトの特定

オブジェクト種類の指定で複数のオブジェクトが選択される場合、対象のオブジェクトを一

つに特定するために、プロパティ指定などの方法を使用することが出来ます。

種類 例 説明

プロパティ値の直接記述

による指定

@caption=’計算 プロパティ’caption’の値が、’計算’となっているオ

ブジェクト

プロパティ値のワイルド

カードによる指定

@caption=’計算*’ プロパティ’caption’の値が、’計算’から始まるオブ

ジェクト

インデックスによる指定 Table[1] Table オブジェクトの’1’番目のオブジェクト

条件の複合 and, or 複数の条件を記述する際に使用します

不等号条件 =, !=, <, >, <=, >= プロパティ値を不等号でチェックします

数値条件の計算 +, -, *, div, mod プロパティ値を計算します

① @textContext=’商品 A-1’によって、プロパティを直接指定しています。

② [1]によって、1番目のオブジェクトのインデックスを直接指定しています。

③ @textContext=’商品 B*’のワイルドカード指定によって選択された2つのオブジェクトから、インデックス指定[1]によって1番目のオブジェクトを指定しています。

④ textContextの値が‘商品 B’の文字で始まり、‘-1’の文字で終わらないものを複合条件で指定しています。

BrowserWindow

TABLE

TR[1]

/BrowserWindow//A[@textContext=’商品 A-1’]

/BrowserWindow//A[@textContext=’商品 B*’ and @textContext!=’*-1’]

A[@textContext=’商品 A-1’]

TR[2]

A[@textContext=’商品 A-2’]

TR[3]

A[@textContext=’商品 B-1’]

TR[3]

A[@textContext=’商品 B-2’]

/BrowserWindow//A[@textContext=’商品 B*’][1]

/BrowserWindow//A[1]

Page 10: SilkTest 2010 における XPATH によるダイレクトオブ … では、ツリー構造で管理するオブジェクト情報を、親から順番に現在位置を変えな

10

2010 Micro Focus K.K. All Rights Reserved

3 XPATH によるオブジェクト記述のサンプル

この章のサンプルは、「図 3-1」のような、Web から料理本を購入するアプリケーションの、

表形式になっているオブジェクト群を対象として考えます。

図 3-1 サンプル画面イメージ

図 3-2 サンプル画面のオブジェクトツリー構造

BrowserWindow

TR[1]

A[@textContext=’Best Grilling Recipes’]

A[@textContext=’Cooking for Two’]

A[@textContext=’The Best Skillet Recipes’]

TABLE

TD[1]

TD[2]

TD[5]

SPAN[@class=’productPrice’]

・・・

TR[2]

TD[1]

TD[2]

TD[5]

・・・

SPAN[@class=’productPrice’]

TR[3]

TD[1]

TD[2]

TD[5]

・・・

SPAN[@class=’productPrice’]

Page 11: SilkTest 2010 における XPATH によるダイレクトオブ … では、ツリー構造で管理するオブジェクト情報を、親から順番に現在位置を変えな

11

2010 Micro Focus K.K. All Rights Reserved

3.1 x列、y行のオブジェクトを指定する

サンプルアプリケーションにおいて、行と列を数値で指定する場合。

図 3-3 サンプル画面イメージ

目的 サンプル中において、2行目の2列目を指定させます。

XPATH /BrowserApplication//BrowserWindow//TABLE[1]//TR[2]/TD[2]

説明 /BrowserApplication//BrowserWindow//TABLE[1]

=>1番目のテーブル全体を指定しています。

//TR[2]

=>2行目を指定しています。

/TD[2]

=>2列目を指定しています。

Page 12: SilkTest 2010 における XPATH によるダイレクトオブ … では、ツリー構造で管理するオブジェクト情報を、親から順番に現在位置を変えな

12

2010 Micro Focus K.K. All Rights Reserved

3.2 ‘合計’列、y行のオブジェクトを指定する

サンプルアプリケーションにおいて、2行目のデータの中で、右端にある「合計金額」列を指

定する場合。

図 3-4 サンプル画面イメージ

目的 2行目のデータから、列の種類を指定してオブジェクトを指定します。

XPATH /BrowserApplication//BrowserWindow//TR[2]//SPAN[@class='productPrice']

説明 /BrowserApplication//BrowserWindow//TR[2]

=>テーブル上の2行目を指定しています。

//SPAN[@class='productPrice']

サンプルのテーブル中において、右端の列だけがプロパティ「class」の値とし

て、’productPrice’を持っているので、列を指定するために”SPAN[@class='productPrice']”と

記述して、オブジェクトを特定します。

※)/BrowserApplication//BrowserWindow//TABLE[1]//TR[2]/ SPAN[@class='productPrice']

と、TABLEオブジェクトを記述することも可能ですが、この場合はプロパティ指定によってオブジ

ェクトを特定しているため、中間の”TABLE[1]”を指定しなくても動作します。

Page 13: SilkTest 2010 における XPATH によるダイレクトオブ … では、ツリー構造で管理するオブジェクト情報を、親から順番に現在位置を変えな

13

2010 Micro Focus K.K. All Rights Reserved

3.3 指定したタイトルの行を探して、‘合計’列を指定する

サンプル中において、複数ある行の中から、タイトルが「Cooking for Two」となっているデ

ータを検出し、その行の右端にある合計金額列を指定したい場合。

※)「図 3-5」の赤枠部分と、「図 3-6」の赤枠部分は異なる行にデータがありますが、サンプル

の XPATH は商品名で検索しているので、どちらのパターンでも目的のオブジェクトを見つける

ことが出来ます。

図 3-5 タイトル検索のサンプル画面イメージ(1)

図 3-6 タイトル検索のサンプル画面イメージ(2)

Page 14: SilkTest 2010 における XPATH によるダイレクトオブ … では、ツリー構造で管理するオブジェクト情報を、親から順番に現在位置を変えな

14

2010 Micro Focus K.K. All Rights Reserved

目的 直接指定が困難なオブジェクトを、別のオブジェクト検索と、位置指定記号による移動で指定し

ます。

XPATH /BrowserApplication//BrowserWindow//TABLE[1]//A[@textContents='Cooking for

Two']/../..//SPAN[@class='productPrice']

説明 /BrowserApplication//BrowserWindow//TABLE[1]//A[@textContents='Cooking

for Two']

=>プロパティ「textContents」の値が、’Cooking for Two’となっているオブジェクトを特定しま

す。

/../../

=>二つ上のオブジェクト(この場合は TR[2]で表わされる、行データ)に、相対位置指定で移

動します。

//SPAN[@class='productPrice']

=>現在の位置(直前の位置指定記号で示された位置)から検索を再開し、その行の右端に

ある列を、プロパティ classの値によって指定しています。