如何呼叫<;李>;使用java从属性文件中获取id值?
目前我正在开发SeleniumWebDriver和Java。我有一个运行所有其他脚本的主脚本。主脚本如下所示:如何呼叫<;李>;使用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
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
脚本如下:
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