目前我正在使用 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();
}
}
目前在我的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>
我不知道如何将这些值存储在属性文件中。谁能建议我解决..
答案 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
然后在使用第一个给定方法加载文件后,您可以使用:
循环访问IDint 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'
}
这是你想做的吗?