как получить xpath из testObject студии Katalon в стороннем jar-файле - PullRequest
3 голосов
/ 28 октября 2019

Я хочу создать jar-файл стороннего производителя для функции "настроить ожидание", который в дальнейшем будет использоваться в тестовых случаях студии Katalon для синхронизации тестового примера путем вызова "waitTillObjectPresent ()".

Пример моей вызывающей функции из Katalon Studio будет выглядеть следующим образом:
Здесь я пытаюсь вызвать функцию Java "waitTillObjectPresent ()" из Katalon Studio.

  WebUI.navigateToUrl('https://www.companysite.com/en')
//Wait for element till present upto 10 sec.
        WaitForObject.waitTillObjectPresent'(findTestObject('V3-Web/WaitForObject/Page_Livtten/button_Results'), 10)
        WebUI.click(findTestObject('V3-Web/WaitForObjectDemo/Pagetten/button_Results'))

Примечание:В приведенном выше коде «WaitForObject» - это мой класс Java, а «waitTillObjectPresent» - это свободный метод ожидания в том же классе.

Пробовал с помощью следующего кода Java:

public void waitTillObjectPresent(TestObject to, int waitingtime){
// HERE IS ISSUE, I am not getting TestObject from Katalon Studio calling method 

   int counter=0;
   String locator= object.findPropertyValue('xpath');

    System.out.println("xpath is:: " + locator);
    WebDriver driver = DriverFactory.getWebDriver();
  // HERE IS ISSUE, I am not able to getting  WebDriver instance from Katalon Studio 

    // fluent wait method 
            Wait wait = new FluentWait(driver )
            .withTimeout(waitingtime, TimeUnit.SECONDS)
            .pollingEvery(1000, TimeUnit.MILLISECONDS)
            .ignoring(WebElementNotFoundException.class)

            WebElement ele = (WebElement) wait.until(new Function<WebDriver, WebElement>()  {
                public WebElement apply(WebDriver driver) {
                    counter ++
                    return driver.findElement(By.xpath(locator));
                }
            });
    System.out.println("Waiting time for Object ::: "+ object+" ::: rendering is :::: " +counter*700 +"  ::: miliseconds ie in seconds ::: " +(counter*700)/1000);
    }
}

В приведенном выше коде яполучение ошибок в 2 точках:

1-й выпуск: я не получаю TestObject в java-программе от студии Katalon.

2-й выпуск: я не могу получить экземпляр веб-драйвера с кодом WebDriver driver = DriverFactory.getWebDriver();

Пожалуйста, помогите мне, я новичок в студии Katalon.

1 Ответ

2 голосов
/ 30 октября 2019

Вот лучшее решение:

1-й ВЫПУСК: Я не получаю TestObject в программе Java в студии Katalon.

Для вышеуказанной проблемы вы не можете собрать значение объекта, подобного этому String locator= object.findPropertyValue('xpath');, вам нужно сделать что-то подобное, чтобы получить значения от объекта

public static String  getFieldNamesAndValues(final Object obj, boolean publicOnly)
            throws IllegalArgumentException, IllegalAccessException {
        Class<? extends Object> c1 = obj.getClass();
        System.out.println("Class value is c1:::" + c1);
        Map<String, Object> map = new HashMap<String, Object>();
        Field[] fields = c1.getDeclaredFields();
        System.out.println("Fields in objects :: " + fields.toString());
        System.out.println("Xpath Before for loop::: " + fields.getClass());
        for (int i = 0; i < fields.length; i++) {
            String name = fields[i].getName();
            System.out.println("Fields name ::: " + name);
            if (publicOnly) {
                if (Modifier.isPublic(fields[i].getModifiers())) {
                    Object value = fields[i].get(obj);
                    map.put(name, value);
                }
            } else {
                fields[i].setAccessible(true);
                Object value = fields[i].get(obj);
                map.put(name, value);
            }
        }
        System.out.println("Return on object is ::::--> " + map.get("selectorCollection").toString());
        return (String) map.get("selectorCollection");
    }

И вызвать вышезапрограммируйте getFieldNamesAndValues(Testobject, false) вместо этого String locator= object.findPropertyValue('xpath');

2-й ПРОБЛЕМА: Я не могу получить экземпляр веб-драйвера с кодом драйвера WebDriver = DriverFactory.getWebDriver ();

По вопросу2-й: передать экземпляр DriverFactory.getWebDriver () из студии Katalon в java, как это

//Wait for element till present upto 10 sec.
        WaitForObject.waitTillObjectPresent'(DriverFactory.getWebDriver() , findTestObject('V3-Web/WaitForObject/Page_Livtten/button_Results'), 10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...