2017-09-16 56 views
-1

我剛開始學習java的java。 我有這個測試代碼,它基本上打開google.com頁面並獲得它的標題,並聲明標題。我的問題是每次運行測試時,Firefox都會被調用兩次。我已經搜索了可能的問題,嘗試了一些修補程序。但沒有爲我工作..嘗試更改「@BeforeTest」到「@BeforeClass」和「@Before」仍然相同。Selenium-Java正在打開Firefox的兩個實例

火狐版本:55.0.3

硒版本:3.5.3

geckodriver:0.19.0

這裏是我的代碼:

public class ATest { 
    public String baseURL = "http://google.com"; 
    public WebDriver driver; 

    @BeforeTest 
    public void setBaseURL() { 
     driver = new FirefoxDriver(); 
     driver.get(baseURL); 
    } 

    @Test 
    public void verifyHomePageTitle() { 
     setBaseURL(); 
     String expectedTitle = "Google"; 

     String actualTitle = driver.getTitle(); 
     Assert.assertEquals(actualTitle, expectedTitle); 
    } 


} 
+0

不要叫''裏面verifyHomePageTitle' setBaseUrl'。讓測試框架調用方法。測試框架調用'setBaseURL',然後調用'verifyHomePageTitle'。由於您在測試方法中調用了'asBaseURL',因此它會被調用兩次(一次由框架調用,一次由您調用)。 –

+0

在此測試中,在測試之前和測試期間,setBaseUrl方法被調用兩次。當您完全移除@BeforeTest並再次運行時會發生什麼? – Ihsan

+0

非常感謝大家! –

回答

0

@BeforeTest測試之前執行,所以你需要從你的測試中去掉setBaseURL()。無論如何,它將在它之前運行。

+0

謝謝:)現在工作 –

0

我沒有用硒使用Java,只能使用Ruby。但我的猜測是,@BeforeTest指令使得setBaseURL()在每次測試之前執行。所以在這裏你有你第一次打開的瀏覽器。稍後在實際測試中,你所做的是再次運行setBaseURL(),這會打開第二個瀏覽器。

刪除setBaseURL()verifyHomePageTitle()或刪除@BeforeTest

+0

非常感謝。那就是爲什麼。 –

0

get方法被調用兩次因此它加載頁面兩次。一旦進入@BeforeTest,第二次進入@Test,請致電setBaseURL。卸下@BeforeTestsetBaseURL,移動get方法在實際@Test方法,你應該罰款

這裏是java的醫生說大約get方法

void get(java.lang.String url) 
Load a new web page in the current browser window. 

得到

無效的get(java的.lang.String url)

在當前瀏覽器窗口中加載新的網頁。這是使用HTTP GET操作完成的,並且該方法將阻塞,直到加載完成。這將遵循服務器發出的重定向或者返回的HTML中的重定向。如果一個元重定向「休息」了一段時間,最好等到這個超時結束,因爲如果你的測試正在執行未來對這個接口調用的結果時,底層頁面會發生變化,那麼將會對新加載的頁。 WebDriver.Navigation.to(String)的同義詞。

參數:url - 要加載的URL。最好是用一個完全合格的URL

public class ATest { 
    public String baseURL = "http://google.com"; 
    public WebDriver driver; 

    @BeforeTest 
    public void setBaseURL() { 
     driver = new FirefoxDriver(); 
    } 

    @Test 
    public void verifyHomePageTitle() { 
     driver.get(baseURL); 

     String expectedTitle = "Google"; 
     String actualTitle = driver.getTitle(); 
     Assert.assertEquals(actualTitle, expectedTitle); 
    } 
} 

鏈接以供參考

+0

非常感謝你,先生! :) –

+0

NP,如果它已經幫助你解決問題,然後投票:) – JRG