【问题标题】:how to get the xpath from Katalon studio's testObject in 3rd party jar file如何在 3rd 方 jar 文件中从 Katalon 工作室的 testObject 获取 xpath
【发布时间】:2020-02-23 22:43:36
【问题描述】:

我想为“自定义等待”功能创建第 3 方 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”是同一个类中的流利等待方法。

尝试使用以下 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 处遇到错误:

第一个问题:我没有从 Katalon 工作室获得 Java 程序中的 TestObject。

第 2 个问题:我无法使用代码 WebDriver driver = DriverFactory.getWebDriver(); 获取 webdriver 实例

请帮助我,我是 Katalon 工作室的新手。

【问题讨论】:

    标签: java selenium selenium-webdriver automated-tests katalon-studio


    【解决方案1】:

    这是最好的解决方案:

    第一个问题:我没有从 Katalon 工作室获得 Java 程序中的 TestObject。

    对于上述问题,你不能像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');

    第二个问题:我无法使用代码 WebDriver driver = DriverFactory.getWebDriver(); 获取 webdriver 实例;

    对于第二个问题:像这样将 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多