0

I want to set my local driver as the selenium driver. The question is qaf will start a new driver each time.

public static QAFExtendedWebDriver driver;

public static QAFExtendedWebDriver localDriver(){
        System.setProperty("webdriver.chrome.driver","src/main/resources/webdriver/chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        options.setExperimentalOption("debuggerAddress","localhost:9222");
        ChromeDriver driver1 = new ChromeDriver(options);
        QAFExtendedWebDriver webDriver = new QAFExtendedWebDriver(driver1);
        driver = webDriver;
        return driver;
    }

and if I want to click a QAF webelement, it won't use my local driver

new QAFExtendedWebElement("Company").click();

Can someone help me with this?

yan
  • 11
  • 3

1 Answers1

0

The question is unclear, do you want to set behavior to create new driver for each test or to reuse driver instance? you should use selenium.singletone=method if you want to create new driver instance for each testcase. it will tear down driver instance after test get completed.

The code you have provided to create driver instance is not required when using qaf. To set which driver to use, you need to set driver.name property.

In order to use local driver, if remote word not used in driver name, it will use local driver. For instance chromeDriver refers to running chromdriver in local system. with qaf version 3+ you don't need to download driver executable or don't need to set webdriver.chrome.driver. It uses driver manager to download and set driver executable depending on local browser version.

if you want to set specific capability you can set using properties or using driver listener.

all you need to do is, in properties file set properties:

driver.name=chromeDriver

#set additional capabilities if required
#chrome.additional.capabilities={}

In code:

 new QAFExtendedWebElement("element.locator").click();

//other way using common steps
//import static com.qmetry.qaf.automation.step.CommonStep.click;
click("element.locator")

//Another way of using element factory
//import static com.qmetry.qaf.automation.ui.webdriver.ElementFactory.$;

$("element.locator").click();

If you want driver instance anywhere in code:

QAFExtendedWebDriver driver = (QAFExtendedWebDriver)TestBaseProvider.instance().get().getUiDriver();

//another way
QAFExtendedWebDriver driver = new WebDriverTestBase().getDriver();

Refer:

user861594
  • 5,733
  • 3
  • 29
  • 45