如何使用java?</li>从属性文件中调用<li> id值

时间:2014-07-04 06:33:01

标签: java jquery selenium selenium-webdriver

目前我正在使用 Selenium WebDriver Java 。我有一个运行所有其他脚本的主脚本。主脚本如下:

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();
}
}
  1. 我有一个kPI列表如下:
  2. enter image description here 目前在我的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>
    

    我不知道如何将这些值存储在属性文件中。谁能建议我解决..

1 个答案:

答案 0 :(得分:0)

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

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();
            }
        }
    }
}

如果您只在path_to_your_properties_file中提供文件名,则该文件将位于您的项目目录中。但是你也可以提供一个文件路径。

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

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'
}

这是你想做的吗?