2015-05-11 33 views
1

我正在使用Visual Relation Identifier(VRI)QTP,當我在對象存儲庫中添加源對象(請參閱代碼)時它工作正常。但是,在QTP幫助文件中提到即: 「指定的對象必須是來自測試對象庫的對象,它不能是由程序化描述指定的測試對象。」以編程方式將對象添加到qtp本地存儲庫

我使用的代碼是:

Set rc = VisualRelations.Create 
Set relation = rc.Add 

'****(Source Object) 
relation.relatedobjectpath = "Browser(""Oracle | PeopleSoft Enterprise"").Page(""Oracle | PeopleSoft Enterprise"").WebElement(""User ID:"")" 

relation.relativeposition = micRelLeft 
relation.setargument micrelinline, True 

Set des=Description.Create 
des.Add "micclass","WebEdit" 
des.Add "visual relations",rc 

'****(Target Object) 
Browser("name:=Oracle.*").Page("title:=Oracle.*").WebEdit(des).set "[email protected]" 
Set relation = Nothing 
Set rc = Nothing 

有什麼辦法避免對象存儲庫的依賴。如果沒有,是否可以動態地將源對象加載到對象庫中並且可以用於VRI?

感謝&問候,

Sreenisha斯里尼瓦森

回答

2

是的,這是可以做到,對於這樣的一個API,請參閱 「HP QuickTest Professional的對象倉庫自動化參考」 的在線幫助。

但是,您無法輕鬆地向已加載的OR添加新對象。從上面引述的強力黴素,這表示,它(幾乎)所有:

注意:您可以使用對象倉庫自動化對象模型 操作保存在文件系統共享對象庫。如果 想要操縱質量 Center中存儲的共享對象存儲庫,則必須下載共享對象存儲庫並將其保存到文件系統的 ,然後才能使用對象存儲庫自動化對象 模型對其進行操作。

這也意味着你需要下載(或定位)tsr文件,使用API​​操作它,卸載當前加載的ORs並重新加載它們。我發現這僅僅是爲了創建一個簡單的測試對象而產生的麻煩。

因此,下面的解決方法已被證明非常有用:

  • 準備一個「模板」或使用或主編的「錨」對象的權利類的條目。
  • 確保它包含要控制的所有TO屬性,並將它們設置爲任何值。
  • 也準備依賴於該測試對象的視覺關係。當你嘗試在OR編輯器中查找測試對象時,這種視覺關係當然不起作用。
  • 然後在運行時,使用.setTOProperty以編程方式修改該測試對象的TO屬性,以便在該實際情況下將其屬性設置爲您需要的值。

的視覺關係,將工作,那麼即使TO的TestObject沒有被固定在‘錨’的屬性的值‘編譯’時,並沒有使用相當複雜或API,並且沒有卸載/再OR文件。**

作爲一個側面說明,由於視覺關係的嚴重侷限性,請考慮完全避免它們。遲早你想要一個視覺關係依賴於一個「錨」測試對象本身取決於視覺關係(不可能 - 嚴重的限制,我沒有看到一個原因),遲早你生病了我列出的解決方案是因爲它的間接性(它將您帶回原始問題)。

另一種方法是創建等效於視覺關係的腳本代碼,即獲取「錨」測試對象的x和/或y位置,並通過「猜測」其x/y位置(或其他屬性),使用描述性編程,通過Description對象,或使用.ChildObjects和某些代碼枚舉候選對象。

這與一些智能庫庫例程設計一起,創建了緊湊,可維護,可讀的解決方案,沒有OR依賴關係,並且沒有視覺關係特性的固有限制。

相關問題