2017-08-25 3 views
1

すべての特定のXPath文字列をリソースファイルに集中化し、そのリソースファイルの変数をテストスイート(ロボットフレームワーク)にインポートします。こうすることで、それらを1か所で管理することができ、ロボットファイルを読みやすくする変数名を使用することができます。それは良い練習であるか?リソースファイルのXPathの一元化、ロボットファイルからの引数の受け渡し方法

時には変数を動的にするために、変数に引数を渡したい場合があります。しかし、変数の値にはXPathが含まれ、時には//div[path...etc][text()='MyString ']を持ちます。

質問:ロボットファイルで、変数(「MyString」)を変数を使用しているクリックエレメントメソッドに渡す方法はありますか?

+0

[このアプローチは、あなたを、スイートあり](https://stackoverflow.com/questions/40973598/how-to-use-variable-which-value-should-be-set-in-keyword-or -test-in-xpath/42732216#42732216) - ロケータを動的に生成するヘルパーキーワード。それはちょっと複雑かもしれませんが、あなたがこの状況を数回以上持っていれば、それは報われます。 – Todor

答えて

1

UIオブジェクトのテクニカルリファレンスをテストロジックから分離することは、確かに良い習慣です。通常、このパターンはオブジェクトストアと呼ばれますが、他の名前も使用されます。

分離する方法としては、私はYAML variable file静的な値のためのresource file上を使用して、テスト・スクリプト内のリソースファイルを含めた上で、コマンドライン引数robot --variablefile MyVariables.yaml MyRobotFile.robotを使用してそれらを含めてお勧めします。これには、異なるソフトウェアリリースのためにオブジェクトストアを切り替える場合、テストスクリプトを変更する必要がないという利点もあります。

ロボットの起動時に既知の値によって変数の内容が変更された場合、Python変数クラスは良いアプローチです。これは引数をとるPython functionまたはPython classです。Pythonを使用してデータベースにアクセスしたり、ファイルに書き込んだり、内部ロジックを使用して、返される必要のある変数や保持する必要がある値を判断できます。

xpathに変数を追加することなく、多くの特定の特殊キーワードを使用することなく、SeleniumLibraryライブラリのCustom Locator Strategy機能を使用します。これにより、テストロジック自体に追加キーワードなしで通常のキーワードを使用することができます。

以下の例では、カスタムロケータabc=が作成され、標準のSeleniumLibraryキーワードとしてxpath=の代わりに使用できます。この場合、LocatorオブジェクトストアとしてDictionaryを使用してIDを保持し、一意の名前を使用してそれらを参照します。 abc=${criteria}引数の値から削除されることに注意してください。おそらく、

*** Variables *** 
&{locators} 
... myCustomId1=//*[@id='12234'] 
... myCustomId2=//*[@id='23455'] 

*** Test Cases *** 
Test Case 
    Add Location Strategy   abc Custom Locator Strategy 
    Page Should Contain Element abc=myCustomId1 

*** Keywords *** 
Custom Locator Strategy 
    [Arguments] ${browser} ${criteria} ${tag} ${constraints} 
    ${WebElement}=  Get Webelement  xpath=${locators['${criteria}']} 
    [Return] ${WebElement} 
関連する問題