2017-08-03 55 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

相关问题