无法通过selenium网格在多台机器中执行测试用例

时间:2018-01-04 08:08:39

标签: java selenium

当我们通过selenium网格在多台机器上执行我们的测试用例时,每次只在一台机器上执行测试用例时,集线器连接到3台节点机器。 我们尝试实现这一目标的过程是:

执行开始时,在 @BeforeMethod 中,它调用初始化方法,我们首先设置在Chrome中运行测试用例所需的功能,然后启动网格。

下面是为selenium网格编写的代码:

@BeforeMethod(alwaysRun = true)
    public static synchronized void initialize(ITestContext context, Method method, @Optional String bsEnvironment)
            throws IOException {

        String customer = context.getCurrentXmlTest().getParameter("customer");
        String testName = context.getCurrentXmlTest().getName();
        setTestName(testName);
        String methodName = "";
        m_testMethod = method.getName();
        methodName = testName + "_" + method.getName() + "_" + customer;
        CommonHelper.renameRetryLog(m_logDir, methodName);
        Log.setLog(m_logDir, methodName);

        m_context = context;
        if (m_runOnBrowserStack) {

            if (null == context.getCurrentXmlTest().getParameter("bsEnvironment")
                    || context.getCurrentXmlTest().getParameter("bsEnvironment").isEmpty()) {
                Log.info("Adding bsEnvironment parameter for run on BrowserStack");
                context.getCurrentXmlTest().addParameter("bsEnvironment", bsEnvironment);
            }
        }

        try {

            WebDriver driver = m_driverForThread.get();
}



private static ThreadLocal<WebDriver> m_driverForThread = new ThreadLocal<WebDriver>() {

        @Override
        protected WebDriver initialValue() {
            WebDriver driver = null;
            try {
                driver = loadDesktopDriver();
            } catch (Exception e) {
                e.printStackTrace();
            }

            Log.info("Initializing Webdriver");
            m_listOfWebDrivers.add(driver);
            return driver;
        }
    };

protected static WebDriver loadDesktopDriver() throws Exception {

        WebDriver driver = null;
        Log.debug("Get Driver for Browser : " + m_browser);

        try {
            if (!m_runOnBrowserStack && null == m_browser) {
                throw new IllegalArgumentException("Browser value should be provided for test");
            }
            driver = getNewDriver(m_browser, "", "", m_context);
        } catch (Exception e) {
            Log.fatal("Error creating a webdriver. Exception message : " + e.getMessage());
            throw e;
        }

        return driver;
    }

public static WebDriver getNewDriver(String browserName, String browserVersion, String platform,
            ITestContext context){

String chromeDriverPath = driverHome + File.separator + FrameworkConstants.chromeDriverExeName;

            if (m_runOnBrowserStack || CommonHelper.isFileExists(chromeDriverPath)) {

                if (!m_runOnBrowserStack)
                    desiredCapabilities = DesiredCapabilities.chrome();

                desiredCapabilities.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);

                ChromeOptions options = new ChromeOptions();
                options.addArguments("--start-maximized");
                options.addArguments("--disable-extensions");

                desiredCapabilities.setCapability(ChromeOptions.CAPABILITY, options);

                System.setProperty("webdriver.chrome.driver",chromeDriverPath);

                if (null != m_gridUrl && !m_gridUrl.isEmpty()) {

                    return new RemoteWebDriver(new URL(m_gridUrl), desiredCapabilities);

                } else
                    return new RemoteWebDriver(service.getUrl(), desiredCapabilities);

            } else {
                throw new FileNotFoundException(
                        "Chrome Driver path : " + chromeDriverPath + "\n\"" + FrameworkConstants.chromeDriverExeName
                                + "\" not found in driver home path declared in System Environment Variable \""
                                + driverHome + "\"");
            } 

0 个答案:

没有答案