zebrunner / carina-webdriver

Apache License 2.0
7 stars 10 forks source link

initPage() fails to add WebDriver to contructor parameters (for getConstructorByParams()) when passing additional parameters #225

Closed MKacprzakSolvd closed 2 months ago

MKacprzakSolvd commented 4 months ago

initPage() fails to add WebDriver to contructor parameters when passing additional parameters, which results in getConstructorByParams() not finding appropriate constructor.

for example when calling:

FooPageBase fooPage = initPage(getDriver(), FooPageBase.class, "some_arg");

I get RequiredCtorNotFoundException because getConstructorByParams() seems to look for FooPage(String), instead of FooPage(WebDriver, String).

Replacing: https://github.com/zebrunner/carina-webdriver/blob/efb7ad0a2953a6c15e6a01aac41b8eb17b56b0db/src/main/java/com/zebrunner/carina/utils/factory/ICustomTypePageFactory.java#L148-L151

with:

            // add WebDriver to the list of arguments for the constructor
            Object[] copyHelper = new Object[parameters.length+1];
            copyHelper[0] = driver;
            System.arraycopy(parameters, 0, copyHelper, 1, parameters.length);
            parameters = copyHelper;

seems to fix the issue for me.

Calling:

FooPageBase fooPage = initPage(getDriver(), FooPageBase.class, getDriver(), "some_arg");

also fixes the issue, but that doesn't seems like intended usage.