Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何呼叫<;李>;使用java从属性文件中获取id值?_Java_Jquery_Selenium_Selenium Webdriver - Fatal编程技术网

如何呼叫<;李>;使用java从属性文件中获取id值?

如何呼叫<;李>;使用java从属性文件中获取id值?,java,jquery,selenium,selenium-webdriver,Java,Jquery,Selenium,Selenium Webdriver,目前我正在开发SeleniumWebDriver和Java。我有一个运行所有其他脚本的主脚本。主脚本如下所示: import org.openqa.selenium.WebDriver; public class MasterScript { public static void main(String[] args) throws Exception { //***************************************************** // Calling M

目前我正在开发SeleniumWebDriverJava。我有一个运行所有其他脚本的主脚本。主脚本如下所示:

import org.openqa.selenium.WebDriver;
public class MasterScript {
public static void main(String[] args) throws Exception {
//*****************************************************
//   Calling Methods
//*****************************************************
LoginOneReports utilObj = new LoginOneReports ();// calling my 1st LoginOneReports.java
WebDriver driver;
driver=utilObj.setUp();
if(utilObj.Login()){
System.out.println("Login sucessfully completed");
} else {
System.out.println("Login failed");
System.exit(0);
}
NewPR utilObj1 = new NewPR(driver);// calling my 2st NewPR.java Here I need to change
if(utilObj1.test()){
System.out.println("NewPR KPI page has opened");
} else {
System.out.println("NewPR KPI not able to open");
}
FilterSection utilObj2 =new FilterSection(driver);//calling my 3st Filtersection.java
utilObj2.FilterMatching();
}
}
  • 我有一个kPI列表,如下所示:
  • 目前,在我的NewPR.java脚本中,我直接点击
    NewPR
    脚本如下:

    Log.info("Clicking on Overview and Evolution PR link");
    if(existsElement("ext-new-prs")==true){
    JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript("arguments[0].click();", driver.findElement(By.id("ext-new-prs") ));
    Thread.sleep(6000);
    }
    else{
    Log.info("element not present");
    System.out.println("element not present -- so it entered the else loop");
    }
    return driver.getCurrentUrl().equals("https://10.4.16.159/extranet_newprs/reports/type/default/");
    }
    
    而不是每次点击一个KPI。我需要存储在一个属性文件中,其中包含屏幕截图中的所有值列表。然后我需要调用任何一个或多个KPI,并需要运行第三个脚本,即
    FilterSection.java

    我的问题是所有KPI HTML都是这样的

    <li>
    <a id="ext-pr" class="submenu ext-pr" name="ext-pr" href="https://10.4.16.159/reports/">Problem Reports (PR)</a>
    <ul>
    <li>
    <a id="ext-pr-backlog-age" class=" ext-pr-backlog-age" name="ext-pr-backlog-age" href="https://10.4.16.159/extranet_prbacklogage/reports/type/default/">Age</a>
    </li>
    <li>
    <a id="ext-timetoassign-prs" class=" ext-timetoassign-prs" name="ext-timetoassign-prs" href="https://10.4.16.159/extranet_timetoassignprs/reports/type/default/">Average Time To Assign</a>
    </li>
    

  • 我不知道如何在属性文件中存储这些值集。有人能给我推荐解决方案吗?

    以下是加载属性文件的方法:

    public static Properties loadPropertiesFile(){
        Properties properties = new Properties();
        InputStream input = null;
    
        try {
    
            input = new FileInputStream("path_to_your_properties_file");
    
            // load a properties file
            properties.load(input);
    
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    如果您仅在
    路径中为您的属性文件提供文件名,则该文件将位于您的项目目录中。但是我认为你也可以提供一个文件的路径

    为方便起见,请使用由以下内容组成的属性文件:

    total_ids=5
    id_1=ext-pr
    id_2=ext-pr-backlog-age
    id_3=ext-timetoassign-prs
    id_4=other_id
    id_5=other_id_again
    
    然后,在使用第一个给定方法加载文件后,您可以使用以下方法循环ID:

    int total = Integer.parseInt(properties.getProperty("total_ids"));
    for(int i=1 ; i<= total ; i++){
        String identifier = properties.getProperty("id_"+i);
        WebElement element = driver.findElement(By.id(identifier));
        // Do your tests en 'element'
    }
    
    inttotal=Integer.parseInt(properties.getProperty(“total_id”);
    
    对于(int i=1;我想请任何人帮我解决这个问题我不知道您的属性文件,但为什么不使用Selenium API来查找
    链接并单击它?类似于:
    List elems=driver.findElements(By.cssSelector('li a'));
    和一个
    循环,点击
    元素列表的每个元素。我不知道如何在属性文件中存储
  • id=“ext timetoassign prs”。然后,我只需要从属性文件调用该值,我需要点击FELog.info(“点击平均时间交付PR链接”);如果(existsElement(“ext timetodeliver prs”)==true{WebElement MenuOverlink=driver.findElement(By.id(“ext timetodeliver prs”);actions.moveToElement(MenuOverlink).perform();Thread.sleep(6000);}else{Log.info(“元素不存在”);System.out.println(“元素不存在——因此它进入了else循环”);}很抱歉,我不太清楚您想做什么。您需要将所有
    id
    值存储在属性文件中?String total=properties.getProperty(“total_id”);int total_id;for(int I=1;我错了,它是
    iint total=properties.getProperty(“total_id”);//类型不匹配:无法从字符串转换为int。如果我更改为字符串,那么for(int i=1;我没有测试我的代码,你是对的,只需将editint上的Integer.parseInt添加到ainteger.parseInt(properties.getProperty(“total_id”);它显示null java.lang.NumberFormatException:null