2014-12-05 83 views
0

以下代碼在從RFT IDE與命令行執行時的行爲有所不同。RFT從命令行運行時的行爲有所不同

public void browserError() { 
    startBrowser(""); 
    sleep (1); 

    TestObject[] to = find(atDescendant(".class", "Html.HtmlBrowser")); 

    System.out.println("Object found: " + to.length); 
    logMessage(MessType.INFO, "Object found: " + to.length); 

} 

如果從RFT IDE運行此代碼時只有一個瀏覽器打開,則「to = 1」的長度。但是,當我從命令行「to = 0」運行它。

似乎瀏覽器實例永遠不會被註冊,所以它永遠不會找到它。

更令人費解的是,這段代碼在另一臺機器上工作,所以我知道我環境中的某些東西已經搞亂了。我只是不知道它是什麼。

在此先感謝。

回答

0

我遇到的問題是由於我的機器使用的JVM與RFT使用的JVM。在撰寫本文時,RFT運行在Java 1.7上,不支持1.8。 RFT使用1.7版來執行所有腳本。但是,當我從命令行運行腳本時,它使用計算機的默認JVM,在我的情況下是1.8版,所以當我執行find命令時,它看不到其他瀏覽器。

感謝IBM印度RFT開發人員之一的Prakash指出了這一點。

所以故事的寓意是這樣的,在命令行中執行的時候,你必須明確地使用相同的JVM是RFT用途,翻譯成:

%IBM_RATIONAL_RFT_ECLIPSE_DIR%\ JDK \ BIN \ java.exe的。 ..(使用該目錄中的java.exe)

java的...(使用機器的默認JVM)

我希望可以幫助別人的未來。