如何使用Selenium WebDriver单击特定值?

时间:2014-07-10 03:53:21

标签: javascript selenium selenium-webdriver

这段代码工作正常。但问题是它从属性文件加载所有值并单击列表中的第1个值。如果我想从列表中单击第5个值,我该怎么做。

Properties properties = new Properties();
InputStream input = null;
try {
    input = new FileInputStream("C:/FilterSection/kpi.properties");
    // load a properties file
    properties.load(input);
} catch (IOException ex) {
    ex.printStackTrace();
} finally {
    if (input != null) {
        try {
            input.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
int total = Integer.parseInt(properties.getProperty("total_ids"));
for(int i=1 ; i<= total ; i++){
    String identifier = properties.getProperty("id_"+i);
    System.out.print(identifier);
    WebElement element = driver.findElement(By.id(identifier));
    actions.moveToElement(element).click().perform();
}

但是它从属性文件中做了什么意味着

total_ids=5
id_1=ext-pr-backlog-age
id_2=ext-timetoassign-prs
id_3=ext-timetodeliver-prs
id_4=ext-timetoresolve-prs
id_5=ext-new-prs

正在加载和打印所有ID,如下所示

ext-pr-backlog-ageext-timetoassign-prsext-timetodeliver-prsext-timetoresolve-prsext-new-prs

此行System.out.print(identifier);

当我使用这段代码时

WebElement element = driver.findElement(By.id(identifier));
actions.moveToElement(element).click().perform();

它只会点击第一个kpi。如何从列表中执行任何一个KPI,而不仅仅是第一个KPI。

此KPI id_1 = ext-pr-backlog-age它在FE中单击。但如果我想要第5个意味着怎么做..请任何人帮助我。

1 个答案:

答案 0 :(得分:0)

使用条件来解决此问题。下面的代码只是一个例子。

for(int i=1 ; i<= total ; i++){
String identifier = properties.getProperty("id_"+i);
System.out.print(identifier);

//You could use an if condition to do it
if(i=5){
WebElement element = driver.findElement(By.id(identifier));
actions.moveToElement(element).click().perform();
}
}