java - chrome教學 - selenium爬蟲




如何在Selenium中使用已經打開的Firefox進行測試 (4)

Java示例。 首先,你需要運行Selenium服務器。

java -jar C:\selenium-server-standalone-2.53.0.jar

開始一個新的會話(第一個腳本):

WebDriver driver = new RemoteWebDriver(
                        new URL("http://localhost:4444/wd/hub"), 
                        DesiredCapabilities.firefox());

然後,重新使用(附加)該會話(第二個腳本):

WebDriver driver = new RemoteWebDriver(
                        new URL("http://localhost:7055/hub"), 
                        DesiredCapabilities.firefox());

注意不同的端口號。

這個聲明

WebDriver driver = new FirefoxDriver();

總是打開Firefox的一個新的實例窗口。 它不使用已經打開的Firefox。

任何人都可以讓我知道如何使用已經打開的Firefox來測試,而不是打開一個新的?


使用這樣的遠程網絡驅動程序。

System.Uri uri = new System.Uri("http://localhost:7055/hub");
WebDriver = new RemoteWebDriver(uri, DesiredCapabilities.Firefox());

它將使用已經打開的Firefox瀏覽器。 你可以在這個博客文章中看到這個方法的細節。

http://www.binaryclips.com/2016/03/selenium-web-driver-in-c-how-to.html


在做測試的時候,你只應該實例化你的webdriver一次,然後把它作為參數傳遞給構造函數中的其他類。 像這樣的東西:

public class Test {

WebDriver driver = new FirefoxDriver();
@Test
public void testHomePage() {
    HomePage hp = new HomePage(driver);
    //code here }
}


public class HomePage{
private static WebDriver driver;

public HomePage(WebDriver driver) {
    this.driver = driver;}
}

小心一點,因為如果驅動程序崩潰一次,那麼之後所有必須執行的測試用例都將受到影響,因為它們使用相同的驅動程序,您也將共享cookie,也許以前已打開的會話,等等

更強大的解決方案是為每個測試用例創建一個新的WebDriver,因為這樣做可以使所有的測試用例減少對其他測試用例的依賴。

如果激發你的原因是每個WebDriver需要創建的時間,也許你可以開始考慮並行運行測試用例,例如TestNG。

謝謝





selenium-webdriver