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