2017-07-22 6 views
0

アム失敗しました - wwww.snapdeal.com (1)ウェブサイト にログイン(2)を選択携帯電話>スマートフォン (3)スマートフォンの機種を選択し (4)(6)カード有効期限(月&年)5へセレンのEclipse - ドロップダウン取り扱い - サイト内のステップの下に自動化しようとして

ステップ1を選択してクレジットカード番号 を入力し、お支払い画面で(5)支払 に進んで渡されますが、ステップ6失敗しています。システムがドロップダウンフィールドを特定できないため、選択できませんでした。

は方法の下に試みたが、すべてがSELECTクラスを使用して= // METHOD 1 を失敗している - 問題のドロップダウンVALUES // METHOD 2を動作していないSELECTタグSO SELECT CLASSを持っていないARE - SELECTが使用して // DROWDOWN選択方法をFAILED - METHOD 3 //をFAILED - - FAILED - - アクションクラス使用したクリックしてのSendKeysを使用した。「Elementはされている必要があります "選択" されたが、 "DIV" が示されているエラーを

は助けてください以下

です。また、フィールド "MM"のhtml webelementプロパティのコードとリンクも添付されています

package basic; 

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.JavascriptExecutor; 
import java.sql.Driver; 
import java.util.Set; 
import org.openqa.selenium.support.ui.Select; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.By; 
import org.openqa.selenium.interactions.*; 
import org.openqa.selenium.Alert; 

public class SnapDeal{ 
public static void main(String[]args) throws InterruptedException{ 
System.setProperty("webdriver.chrome.driver", "C:\\Users\\hp\\workspace\\Selenium\\browser\\ 
chromedriver.exe"); 
WebDriver Snap = new ChromeDriver(); 
Snap.get("https://www.snapdeal.com/"); //log into - www.snapdeal.com 
Thread.sleep(3000); 
Snap.manage().window().maximize(); // maximze the window 
Thread.sleep(2000); 
Snap.findElement(By.xpath(".//*[@id='sdHeader']/div[4]/div[2]/div/div[3]/div[3] 
/div/span[1]")).click(); // click on sign-in 
Thread.sleep(1000); 
Snap.findElement(By.xpath("//a [@href='https://www.snapdeal.com/login']")).click(); // click on sign-in 
Thread.sleep(1000); 
Snap.switchTo().frame("loginIframe"); // switch to child pop up window 
Snap.findElement(By.id("userName")).sendKeys("9841490130"); // enter the mobile no 
Snap.findElement(By.id("checkUser")).click(); //click proceed 
Thread.sleep(1000); 
Snap.findElement(By.xpath(".//*[@id='j_password_login_uc']")).sendKeys("badri1984"); // enter the password 
Snap.findElement(By.id("submitLoginUC")).click(); 
Thread.sleep(3000); 
Snap.findElement(By.xpath(".//*[@id='leftNavMenuRevamp']/div[1]/div[2]/ul/li[2]/a/span[2]")).click(); // click on mobiles 
Snap.findElement(By.xpath(".//*[@id='category2Data']/div[1]/div/div/p[2]/a/span")).click(); // click smartphones 
JavascriptExecutor AK = (JavascriptExecutor)Snap;// import JavascriptExecutor interface 
AK.executeScript("scroll(0,700)"); //scroll down the window 
Snap.findElement(By.xpath(".//*[@id='662623821571']/div[3]/div[1]/a/p")).click();//click on a model, new child tab opened. 
String Parwindow = Snap.getWindowHandle(); // capture the parent window id as string "Parwindow" 
System.out.println("PARENT WINDOW ID ID " + Parwindow); // Print the Parent Window ID 
Set<String> allwindows = Snap.getWindowHandles(); // Capture all the window ids as String allwindows 
int count = allwindows.size(); // capture the count of windows ids as int count 
for(String Child : allwindows){  // applying "FOR EACH" loop, declaring String Child equals all windows(all windows ids) 
if (!Parwindow.equalsIgnoreCase(Child)){ // applying if condition as if parent window id not equals to windows ids captured in String child) 
Snap.switchTo().window(Child); // switching to child window using the child window id 
System.out.println("CHILD WINDOW IS " + Child); // printing the child window id 
Thread.sleep(2000); 
JavascriptExecutor SK = (JavascriptExecutor)Snap;// import JavascriptExecutor interface 
SK.executeScript("scroll(0,400)");//scroll down the window 
Thread.sleep(1000); 
Snap.findElement(By.id("buy-button-id")).click();// click on buy bottom 
Thread.sleep(2000); 
JavascriptExecutor ABN = (JavascriptExecutor)Snap;// import JavascriptExecutor interface 
ABN.executeScript("scroll(0,1000)");// Scroll Down 
Thread.sleep(1000); 
Snap.findElement(By.id("make-payment")).click();// click on payment 
Thread.sleep(1000); 
JavascriptExecutor NY = (JavascriptExecutor)Snap;// import JavascriptExecutor interface 
NY.executeScript("scroll(0,800)");// Scroll down and click on buy bottom 
Thread.sleep(1000); 
Snap.findElement(By.name("card_number_mask")).sendKeys("4176092389357621"); // enter the card no 
// METHOD 1 = USING SELECT CLASS - FAILED 
//DROWDOWN SELECTION METHOD USING SELECT - PROBLEM DROPDOWN VALUES ARE NOT HAVING SELECT TAG SO SELECT CLASS NOT WORKING.HOW TO SELECT THE DROPDOWN? 
/*WebElement Date = Snap.findElement(By.id("CS2")); 
Select Date_D = new Select(Date); 
WebElement Date_Value = Date_D.getFirstSelectedOption(); 
System.out.println("Selected Value for Date is " + Date_Value.getText()); 
Date_D.selectByIndex(9);*/ 
// METHOD 2 - USING CLICK AND SENDKEYS - FAILED 
//Snap.findElement(By.id("CS2")).click(); 
//Snap.findElement(By.id("CS2")).sendKeys("09"); 
// METHOD 3 - USING ACTION CLASS - FAILED - "Element should have been "select" but was "div" 
/*Actions act = new Actions(Snap); 
act.moveToElement(Snap.findElement(By.id("CS2"))); 
act.click(); 
act.sendKeys("09"); 
WebElement Month = Snap.findElement(By.id("CS3")); 
Select Month_MM = new Select(Month); 
Month_MM.selectByValue("17"); 
Thread.sleep(2000); 
Month_MM.selectByVisibleText("YY"); 
Thread.sleep(2000); 
Month_MM.selectByVisibleText("19"); 
Thread.sleep(2000); 
Snap.findElement(By.name("cvvValidate")).sendKeys("007"); 
Thread.sleep(1000); 
WebElement Pay_Button = Snap.findElement(By.id("creditcard-continue")); 
Pay_Button.getText(); 
System.out.println("Pay button text is " + Pay_Button.getText()); 
     } 

    }}} 

enter image description here enter image description here

+0

私は完全にあなたの質問を見たhaventしかし、これはタイミングの問題かもしれないように私は思う。すべてのthread.sleepを削除し、ドライバの起動後に暗黙の待機を追加できますか?WebDriver driver = new FirefoxDriver(); driver.manage()。timeouts()。implicitlyWait(20、TimeUnit.SECONDS); –

+0

@ santhosh、返信いただきありがとうございますが、すでに暗黙のうちに試してみましたが、まだ失敗しています。問題はセレンが "MM"ウェブ要素自体を特定していないことです。 – badri

+0

あなたはsnapdealのホームページからナビゲーションステップを教えてください。 –

答えて

0

問題があるは、あなたが選択したタグに探してきたが、それは実際には(そのクラス名に見て)隠されています。 mmのドロップダウンオプションを調べると、実際にはAngular要素であり、セレンの選択構文ではこれを処理できません。以下の手順は、これを解決するのに役立ちます。

  1. ボタンに似た通常の要素としてドロップダウンを考えて、オプションが表示されるようにします。これは角度が働く方法です。

    driver.findElement(by.id("CS5")).click(); 
    
  2. ここで月などのオプションが表示されます。

    //am selecting 05 
    driver.findElement(by.xpath("//li[contains(text(),'05')]").click(); 
    

あなたは私たちが目に見えるため、明示的な待機を使用することができますステップ1と2の間にいくつかの待機を使用する必要があります注意してください。

希望していただきありがとうございます。

+0

@ santhoshは、上記で共有した構文を試しましたが、まだ失敗しています。CS5 "をCS2に変更しましたが、まだ失敗しています。エラーメッセージ"要素が表示されません "を取得しています。どんな助け? – badri

関連する問題