-1

I have been trying to integrate browser stack with my selenium scripts. As part of which i have added desired capabilities in my 'getBrowser' method with data provider in the Base class. As i want to run my scripts in multiple browsers. The browsers list is in "getData" method in Base class.

How can i call the getBrowser method in my testcases and have the getData(browsers list) defined in only the base class. This what i have done and its not right. i have added my base class and the test script.

Base.getBrowser(Platform platform, String browserName, String browserVersion); this line is were i am stuck.

Any help would be appreciated. Thanks

package com.gale.precision.FundVisualizer.core;
import java.net.MalformedURLException;
import java.net.URL;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.DataProvider;
import org.openqa.selenium.Platform;
import org.openqa.selenium.StaleElementReferenceException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

public class Base {

  //public static WebDriver driver = null;
  public static WebDriver driver;
  public static String DriverPath = System.getProperty("user.dir") + "//" + "Drivers";
  public static String DirectoryPath = System.getProperty("user.dir");
  public static Properties prop = new Properties();
  public static InputStream input = null;

  public static final String USERNAME = "antonyprabhu1";
  public static final String AUTOMATE_KEY = "xHRMpqxgD8sn3e3sr75s";

  public static final String URL = "https://" + USERNAME + ":" + AUTOMATE_KEY + "@hub-cloud.browserstack.com/wd/hub";

  @DataProvider(name = "EnvironmentDetails")
  public static void getBrowser(Platform platform, String browserName, String browserVersion) throws MalformedURLException

  {

    DesiredCapabilities capability = new DesiredCapabilities();
    capability.setPlatform(platform);
    capability.setBrowserName(browserName);
    capability.setVersion(browserVersion);
    capability.setCapability("browserstack.debug", "true");

    driver = new RemoteWebDriver(new URL(URL), capability);
    try {
      input = new FileInputStream(DirectoryPath + "//" + "config" + "//" + "app.properties");
      prop.load(input);

    } catch (IOException e) {
      e.printStackTrace();
    }

  }



  @DataProvider(name = "EnvironmentDetails", parallel = true)
  public Object[][] getData() {

    Object[][] testData = new Object[][] {
      {
        Platform.MAC, "chrome", "62.0"
      }, {
        Platform.WIN8,
        "chrome",
        "62.0"
      }, {
        Platform.WINDOWS,
        "firefox",
        "57"
      }
    };

    return testData;
  }

  public static void closeBrowser() {
    driver.quit();
  }

}

package comparison;




import java.net.MalformedURLException;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Platform;
import org.openqa.selenium.StaleElementReferenceException;
import org.openqa.selenium.WebElement;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import com.gale.precision.FundVisualizer.core.Base;
import com.gale.precision.FundVisualizer.core.ExtentReport;
import com.gale.precision.FundVisualizer.pageObject.Comparison;
import com.gale.precision.FundVisualizer.pageObject.InvestmentsSearch;

@SuppressWarnings("unused")
public class AddedInvestmentDisplay extends ExtentReport {

  /*============================================================================================================================

   Test case : Verify that already selected Investments for comparison does not show up  
   ======================================================================================*/





  @Test(testName = "Comparison: Verify an already selected Investment for comparison does not show up in search")
  public void verifyAddedInvestmentDisplay() throws InterruptedException, MalformedURLException {

    //test = extent.createTest(Thread.currentThread().getStackTrace()[1].getMethodName());

    Base.getBrowser(Platform platform, String browserName, String browserVersion);
    InvestmentsSearch.login(Base.driver);
    InvestmentsSearch.InvestmentsLink(Base.driver).click();
    JavascriptExecutor jse = (JavascriptExecutor) Base.driver;
    jse.executeScript("window.scrollBy(0,750)", "");
    InvestmentsSearch.ViewResults(Base.driver).click();



    for (int i = 0; i <= 2; i++)

    {

      try {
        Comparison.firstCheckBox(Base.driver).click();
        break;

      } catch (Exception e) {

        System.out.println(e.getMessage());

      }
    }

    //Base.clickingStaleElements(Comparison.firstCheckBox(Base.driver));

    //Comparison.firstCheckBox(Base.driver).click();



    for (int i = 0; i <= 2; i++)

    {

      try {
        Comparison.analyzeOrCompare(Base.driver).click();
        break;

      } catch (Exception e) {

        System.out.println(e.getMessage());

      }
    }

    Comparison.addInvestmentField(Base.driver).sendKeys("MFC027");

    Comparison.firstSearchResult(Base.driver).click();

    Comparison.addInvestmentField(Base.driver).sendKeys("MFC027");

    Assert.assertEquals(Comparison.emptySearchResult(Base.driver).isDisplayed(), true);



  }

  @DataProvider(name = "EnvironmentDetails", parallel = true)
  public Object[][] getData() {

    Object[][] testData = new Object[][] {
      {
        Platform.MAC, "chrome", "62.0"
      }, {
        Platform.WIN8,
        "chrome",
        "62.0"
      }, {
        Platform.WINDOWS,
        "firefox",
        "57"
      }
    };

    return testData;
  }




  @AfterClass
  public void tearDown()

  {
    Base.closeBrowser();

  }
}
Mehek
  • 49
  • 5

1 Answers1

0

I could resolve this issue by passing the parameters in the @test method

 @Test(testName="Comparison: Verify adding an index in the comparison", dataProvider = "EnvironmentDetails",dataProviderClass = BrowsersDataProvider.class)
  public void verifyAddingIndex(Platform platform, String browserName, String browserVersion) throws InterruptedException, MalformedURLException {
   
     //test = extent.createTest(Thread.currentThread().getStackTrace()[1].getMethodName());
  
     Base.getBrowser(platform,browserName,browserVersion);
  InvestmentsSearch.login(Base.driver);
  
  

like

Mehek
  • 49
  • 5