点击selenium java找到的webelement

时间:2015-11-03 03:43:18

标签: java html selenium if-statement

如何根据班级_3d5d中的数据键获取点击量?更确切地说,如果用户输入值2002,则会有一个错误告诉用户"没有这样的年份,请再次输入"并允许他重新输入价值。如果键入的值与data-type匹配,则会单击该元素。

来自firebug的

html片段

<div class="_5ay5">
    <div class="_18fs">
    <div id="PageScrubberPagelet_153681831442414"          
     data-referrer="PageScrubberPagelet_153681831442414">
         <div class="_4vm5 _5ay5">
            <ul id="u_0_62">
                 <li class="_3d5d">
                     <a id="u_0_5x" class="_3d5b" role="button" href="#" 
                     data-key="recent">Recent</a>
                 </li>
                 <li class="_3d5d">
                     <a id="u_0_5y" class="_3d5b _-fk" role="button" 
                     href="#" data-key="year_2015">2015</a>
                 </li>
                 <li class="_3d5d">
                     <a id="u_0_5z" class="_3d5b" role="button" href="#" 
                     data-key="year_2014">2014</a>
                 </li>
                 <li class="_3d5d">
                     <a id="u_0_60" class="_3d5b" role="button" href="#" 
                     data-key="year_2013">2013</a>
                  </li>

这就是我尝试过的,它会点击用户输入的任何年份。但是,这种解决方案是一种硬编码,其中以编码方式搜索年份。那么,是否有一种方法可以在html中提供年份?此外,如果没有这样的年份,允许用户重新输入。

    Scanner reader = new Scanner(System.in);  // Reading from System.in
    System.out.println("Enter a year (YYYY): ");
    String year = reader.next(); // Scans the next token of the input as an int.


        if (year.contains("recent")){
            WebElement recent = dr.findElement(By.xpath("//a[contains(@data-key,'recent')]"));                        
            recent.click(); 
        }    
        else if (year.contains("2015")){
            WebElement year_2015 = dr.findElement(By.xpath("//a[contains(@data-key,'2015')]"));                           
            year_2015.click();
        }
        else if (year.contains("2014")){
            WebElement year_2014 = dr.findElement(By.xpath("//a[contains(@data-key,'2014')]"));                           
            year_2014.click();
        }             
        else if (year.contains("2013")){
            WebElement year_2013 = dr.findElement(By.xpath("//a[contains(@data-key,'2013')]"));                        
            year_2013.click(); 
        }

1 个答案:

答案 0 :(得分:0)

试试这个:

import org.openqa.selenium.NoSuchElementException;

Scanner reader = new Scanner(System.in);  // Reading from System.in
System.out.println("Enter a year (YYYY): ");
String year = reader.nextInt();

try {
    WebElement yearButton = dr.findElement(By.xpath("//a[contains(@data-key,'" + year + "')]"));                        
    yearButton.click(); 
} catch(NoSuchElementException e) {
    System.out.println("Element does not exist!");
}