2015-12-22 19 views
2

我有一個包含大量日期的下拉菜單。每個日期都以"yyyymm"的形式附在其上。我想要做的是取出值屬性中的日期,並將其與當前月份和年份進行比較。該HTML看起來像這樣:在下拉菜單中獲取選項的值並在if語句中使用它

<select name="selectPeriod"> 
    <option value="201511">Nov 2015</option> 
    <option value="201510">Oct 2015</option> 
    <option value="201509">Sept 2015</option> 

使用IF語句,我想看看第一個選項的值,並將其比作當前日期。我只需要檢查第一個選項,而不是遍歷整個下拉菜單。我的當前設置如下:

int month=Calendar.getInstance().get(Calendar.MONTH)+1; 
int year =Calendar.getInstance().get(Calendar.YEAR); 
String CurDate = String.valueOf(year+month); 
Select dropdown = new Select(driver.findElement(By.name("selectedPeriod"))); 

    dropdown.selectByIndex(0); 
    String ValDate = dropdown.getFirstSelectedOption().getAttribute("ValDate"); 
     if(valDate.equals(CurDate)){ 
     System.out.println("Worked: "); 
      } else {System.out.println("Didnt work: "); 
     } 

當前的代碼提供和Exception in thread "main" java.lang.NullPointerException錯誤,這我假設指的是我的代碼不被填充實際值String ValDate = dropdown.getFirstSelectedOption().getAttribute("ValDate")部分。

最近幾天我纔剛開始使用Java和Selenium,所以這已經是試驗和錯誤。什麼是解決這個問題的最好方法?

+0

您的意思是'.getAttribute( 「值」);'?另外,如果你檢查'dropdown.getFirstSelectedOption()'的值,那它又是什麼?謝謝。 – alecxe

+0

@alecxe呃,我原本沒有,但是一旦我改變它的價值,它解決了我得到錯誤的問題。不幸的是,它看起來好像'If語句'不能正常工作。我從'int month = Calendar.getInstance()。get(Calendar.MONTH)+ 1'中拿出'+ 1'來獲取Nov的月份,但是if語句打印出'Didnt work'。 – Jcmoney1010

+1

@alecxe我發現我的問題與if語句不工作(將兩個'int'年和月與字符串'CurDate'一起添加)。如果你想讓你的評論成爲答案,我會給你複選標記。 – Jcmoney1010

回答

2

option值不具有ValDate屬性 - 您可能已打算獲取value屬性。替換:

dropdown.getFirstSelectedOption().getAttribute("ValDate"); 

有:

dropdown.getFirstSelectedOption().getAttribute("value"); 
相關問題