2017-08-03 27 views
0

需要註冊多個節點到集線器,在此方面的任何幫助將不勝感激.Selenium網格將使用相同的驅動程序對象執行。如何在硒網格中註冊多個節點到集線器

這就是我的代碼的樣子。

使用RemoteWebDriver爲Hub實例派生類。

import java.net.URL; 
import java.util.Arrays; 
import java.util.concurrent.TimeUnit; 

import org.openqa.selenium.Platform; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.chrome.ChromeOptions; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.ie.InternetExplorerDriver; 
import org.openqa.selenium.remote.CapabilityType; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.openqa.selenium.remote.RemoteWebDriver; 

import com.project.pages.ExcelConstants; 

public class DriverInitializer { 

    private WebDriver driver = null; 

    public WebDriver getWebDriverFactory() { 
     return this.driver; 
    } 

    /** 
    * Returns WebDriver Instance Depending on Parameters browser and Grid d 
    * 
    * @param browser 
    * @param grid 
    * @return 
    */ 
    public WebDriver getDriver(String browser, String grid) { 
     if (grid.equals("y")) { 
      getWebDriverRemote(browser); 
     } else if (grid.equals("n")) { 
      getWebDriverLocal(browser); 
     } 
     return driver; 
    } 

    /** 
    * Creates Local WebDriver Instance 
    * 
    * @param browser 
    * @return 
    */ 
    public WebDriver getWebDriverLocal(String browser) { 
     try { 
      if (browser.equalsIgnoreCase("chrome")) { 
       System.setProperty("webdriver.chrome.driver", 
         System.getProperty("user.dir") 
           + "\\Drivers\\chromedriver.exe"); 
       ChromeOptions options = new ChromeOptions(); 
       options.setExperimentalOption("excludeSwitches", 
         Arrays.asList("ignore-certificate-errors")); 
       driver = new ChromeDriver(options); 
       return driver; 
      } 
      if (browser.equalsIgnoreCase("ie")) { 
       System.setProperty("webdriver.ie.driver", 
         System.getProperty("user.dir") 
           + "\\drivers\\IEDriverServer.exe"); 
       DesiredCapabilities cap = DesiredCapabilities 
         .internetExplorer(); 
       cap.setCapability(
         InternetExplorerDriver.UNEXPECTED_ALERT_BEHAVIOR, 
         "accept"); 
       cap.setCapability("nativeEvents", true); 
       cap.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL, 
         ExcelConstants.TEST_URL_2); 
       cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); 
       cap.setCapability(
         InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, 
         true); 
       return driver = new InternetExplorerDriver(cap); 
      } 
      if (browser.equals("firefox")) { 
       System.setProperty("webdriver.gecko.driver", 
         System.getProperty("user.dir") 
           + "\\Drivers\\geckodriver.exe"); 
       // Extra code added 
       DesiredCapabilities capabilities = new DesiredCapabilities(); 
       capabilities.setCapability("acceptInsecureCerts", true); 
       // Extra code ended 
       return driver = new FirefoxDriver(capabilities); 
      } 
     } catch (Exception e) { 
      System.out.println(e.getMessage()); 
     } 
     return driver; 
    } 

    /** 
    * Creates Remote WebDriver Instance 
    * 
    * @param browser 
    * @return 
    */ 
    public WebDriver getWebDriverRemote(String browser) { 
     DesiredCapabilities cap = null; 
     try { 
      if (browser.equals("ie")) { 
       cap = DesiredCapabilities.internetExplorer(); 
       cap.setCapability(
         InternetExplorerDriver.UNEXPECTED_ALERT_BEHAVIOR, 
         "accept"); 
       cap.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL, 
         ExcelConstants.TEST_URL_2); 
       cap.setCapability("nativeEvents", true); 
       cap.setBrowserName("internet explorer"); 
       cap.setPlatform(Platform.ANY); 
      } 
      if (browser.equals("firefox")) { 
       cap = DesiredCapabilities.firefox(); 
       cap.setCapability(
         InternetExplorerDriver.UNEXPECTED_ALERT_BEHAVIOR, 
         "accept"); 
       cap.setBrowserName("firefox"); 
       cap.setPlatform(Platform.ANY); 
      } 

      if (browser.equals("chrome")) { 
       cap = DesiredCapabilities.chrome(); 

       cap.setBrowserName("chrome"); 
       cap.setPlatform(Platform.WINDOWS); 

      } 

      driver = new RemoteWebDriver(new URL(ExcelConstants.NODE_URL_1), cap); 

     } catch (Exception e) { 
      System.out.println(e.getMessage()); 
     } 
     return driver; 

    } 

    public static void main(String[] args) { 
     DriverInitializer di = new DriverInitializer(); 
     di.getWebDriverRemote("chrome"); 
    } 

    /** 
    * Implicit Wait 
    */ 
    public void waitForPageToLoad(WebDriver driver) { 
     driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
    } 

    /** 
    * Maximizes the window 
    */ 
    public void maximizeWindow(WebDriver driver) { 
     driver.manage().window().maximize(); 
    } 

} 

我試過使用線程類,但無法使用該概念來實現它。

+0

有很多現有的教程來做這個......你跟着哪個,結果是什麼? – JeffC

回答

0

下載硒服務器從here 獨立罐子後按照下面的步驟

1開始使用集線器下面的命令

java -jar "your selenium serverstand-alone.jar file path here" -role hub 

2-現在轂 -

java -jar "your selenium-server-stand-alone.jar file path here" -role node -hub http://localhost:4444/grid/register -port 5556 -browser "browserName=chrome, maxInstances=5" 
註冊您的第一個節點

3-現在開始第3,第4等只需更改 - 端口和瀏覽器值

java -jar "your selenium-server-stand-alone.jar file path here" -role node -hub http://localhost:4444/grid/register -port 5558 -browser "browserName=firefox, maxInstances=5" 

使用硒服務器使用RemoteWebDriver,而不是Firefox或更多細節的描述鉻司機

節點執行按照下面的教程

https://www.guru99.com/introduction-to-selenium-grid.html

相關問題