2017-03-03 12 views
-1

日付ピッカーをsiteにテストしようとしています。選択した日付のテキストフィールドにデータを入力した日付を選択しました。セレンを使用して日付ピッカーを使用して値を取得してアサートする方法

ここで、選択した日付が予想どおりであれば、検証したかったのです。私は、日付を選択してテキストフィールドに値を入力するまではできませんでした。

しかし、値を検証しようとすると、テキストフィールドからスペースを取り戻しています。

date-pickerで値が設定された値を取得して同じ値をアサートするにはどうすればよいですか?

私は以下のコードにこれを行っていますが、それは私を助けませんでした。

driver.get(" https://www.jqueryui.com"); 
driver.findElement(By.linkText("Datepicker")).click(); 
WebElement element1 = driver.findElement(By.className("demo-frame")); 
driver.switchTo().frame(element1); 
driver.findElement(By.xpath(".//*[@id='datepicker']")).click();   
driver.findElement(By.xpath("//span[contains(text(),'Next')]")).click(); 
List<WebElement> element = driver.findElements(By.xpath(".//*[@id='ui-datepicker-div']/table/tbody/tr/td")); 
int count = element.size(); 
for (int i = 0; i < count; i++) 
{ 
    String data = element.get(i).getText(); 
    if("2".equals(data)) 
    { 
     element.get(i).click(); 
     break; 
    } 
} 

driver.findElement(By.xpath(".//*[@id='datepicker']")).click(); 
WebElement element2 = driver.findElement(By.xpath(".//*[@id='datepicker']")); 

String value = element2.getText(); 
Assert.assertEquals("04/02/2017",value); 

私が期待する値は04/02/2017で、2が選択されました。どうやらDOMは更新されていません。だから、選択した値を取得してアサートするには、ここで何をしなければなりませんか?

答えて

0

JavascriptExecutorを使用して、選択した日付の値を取得します。あなたのケースでは、次のコードを実行する必要があります。

WebElement element2 = driver.findElement(By.xpath(".//*[@id='datepicker']")); 
JavascriptExecutor jse = (JavascriptExecutor)driver; 
String date = (String) jse.executeScript("return arguments[0].value", element2); 
System.out.println("Date:- " + date); 
Assert.assertEquals("04/02/2017", date); 

ありがとうございます!

0

使用はdriver.findElement(By.id("datepicker")).getAttribute("value");

この

 driver.get(" https://www.jqueryui.com"); 
     driver.findElement(By.linkText("Datepicker")).click(); 
     WebElement element1 = driver.findElement(By.className("demo-frame")); 
     driver.switchTo().frame(element1); 
     driver.findElement(By.xpath(".//*[@id='datepicker']")).click(); 
     driver.findElement(By.xpath("//span[contains(text(),'Next')]")).click(); 
     List<WebElement> element = driver.findElements(By.xpath(".//*[@id='ui-datepicker-div']/table/tbody/tr/td")); 
     int count = element.size(); 
     for (int i = 0; i < count; i++) { 
      String data = element.get(i).getText(); 
      if ("2".equals(data)) { 
       element.get(i).click(); 
       break; 
      } 
     } 

     String value=driver.findElement(By.id("datepicker")).getAttribute("value"); 
     System.out.println("value is" +value); 
     Assert.assertEquals("04/02/2017", value); 
1

説明のようなものを試してみてください:使用.getAttribute()date selectionの値を取得し、これはコードの下に参照してくださいについての詳細は、valueとして属性を渡します。

説明は以下の画像も参照してください。

enter image description here

コードの下にこれを試してみてください、私はarray methodを使用して、このソリューションを行っています。

driver.get("https://jqueryui.com/datepicker/"); 
driver.manage().window().maximize(); 
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); 

WebElement iframe = driver.findElement(By.tagName("iframe"));  //Move inside iframe. 
driver.switchTo().frame(iframe); 
Thread.sleep(2000); 

WebElement date_texbox = driver.findElement(By.id("datepicker"));  
date_texbox.click();            //Date-picker text-box element 
Thread.sleep(2000); 
WebElement date = driver.findElement(By.xpath("//a[@title='Next']/span")); 
date.click();              //Move to the April Month 2017 from date picker. 

int[] array_date = new int[]{1,2,3,4,5,6,7,8}; //Create int array for dates. 

int k = 1;          //K refers to tr tag 
int l = 7;          //l refers to td tag 
for(int j=0;j<array_date.length;j++) 
{ 
    if(l==8) 
    { 
     k++; 
     l=1;   
    } 

    if(k==2 & l==1) 
    { 
     System.out.println("Date = 04/02/2017"); 
     String second_april_2017 = driver.findElement(By.xpath("//table/tbody/tr[2]/td[1]/a")).getText(); 
     System.out.println(second_april_2017); 

     driver.findElement(By.xpath("//table/tbody/tr["+k+"]/td["+l+"]/a")).click(); 

     String get_date_value = driver.findElement(By.id("datepicker")).getAttribute("value"); 
     System.out.println("Date Selection Value = " +get_date_value); 
     Assert.assertEquals("04/02/2017", get_date_value);       //verify condition for this 04/02/2017 date. 
    } 

    System.out.println(k); 
    System.out.println(l); 

    if(!(k==2 & l==1))  //if date selection is 04/02/2017 then this condition will not execute. 
    { 
     driver.findElement(By.xpath("//table/tbody/tr["+k+"]/td["+l+"]/a")).click();  // pass array value of k and l to the xpath. 
    } 

    Thread.sleep(2500); 
    date_texbox.click(); 
    Thread.sleep(2500); 
    l++; 
} 

driver.switchTo().defaultContent(); //Move out side to the frame. 
関連する問題