Java 如何从Katalon studio';s第三方jar文件中的testObject

Java 如何从Katalon studio';s第三方jar文件中的testObject,java,selenium,selenium-webdriver,automated-tests,katalon-studio,Java,Selenium,Selenium Webdriver,Automated Tests,Katalon Studio,我想为“定制等待”功能创建第三方jar文件,该文件将在Katalon studio测试用例中进一步使用,通过调用“waitTillObjectPresent()”来同步测试用例 我从Katalon Studio调用函数的示例如下: 在这里,我试图从Katalon Studio调用java函数“waitTillObjectPresent() WebUI.navigateToUrl('https://www.companysite.com/en') //Wait for element till

我想为“定制等待”功能创建第三方jar文件,该文件将在Katalon studio测试用例中进一步使用,通过调用“waitTillObjectPresent()”来同步测试用例

我从Katalon Studio调用函数的示例如下:
在这里,我试图从Katalon Studio调用java函数“waitTillObjectPresent()

  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”是同一个类中的fluent wait方法

尝试使用以下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);
    }
}
public void waitillobjectpresent(TestObject to,int waitingtime){
//问题是,我并没有从Katalon Studio调用方法获取TestObject
int计数器=0;
字符串定位器=object.findPropertyValue('xpath');
System.out.println(“xpath是::”+定位器);
WebDriver=DriverFactory.getWebDriver();
//这是一个问题,我无法从Katalon Studio获取WebDriver实例
//流畅等待法
等待等待=新建FluentWait(驱动程序)
.withTimeout(waitingtime,时间单位为秒)
.pollingEvery(1000,时间单位为毫秒)
.ignoring(WebElementNotFoundException.class)
WebElement ele=(WebElement)wait.until(new Function()){
公共WebElement应用(WebDriver){
柜台++
返回driver.findElement(By.xpath(locator));
}
});
System.out.println(“对象的等待时间:”+Object+:::::::“+counter*700+”:::::毫秒,即秒数::”+(counter*700)/1000);
}
}
在上面的代码中,我得到了两点错误:

第一个问题:我没有从Katalon studio获得java程序中的TestObject

第二个问题:我无法获取代码为
webdriver-driver=DriverFactory.getWebDriver()的webdriver实例

请帮助我,我是卡塔隆工作室的新手

以下是最佳解决方案:

第一个问题:我没有从Katalon studio获得java程序中的TestObject

对于上述问题,您不能像下面这样收集对象的值
stringlocator=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");
    }
//Wait for element till present upto 10 sec.
        WaitForObject.waitTillObjectPresent'(DriverFactory.getWebDriver() , findTestObject('V3-Web/WaitForObject/Page_Livtten/button_Results'), 10)