2014-11-10 4 views
0

Selenium에서 새롭게 변경되었습니다. MacDonald 로그인 및 주문 셀레늄 스크립트를 만들려고합니다.하지만 로그인 한 후 계속을 클릭 할 수 없으며 다른 옵션을 클릭하면 도움이됩니다.Selenium WebDriver에서 Ajax 팝업을 처리 할 수 ​​없습니다.

내 코드는 다음과 같습니다 -

WebDriver selenium= new FirefoxDriver(); 
selenium.manage().window().maximize(); 

String baseurl = "http://www.mcdelivery.co.in/"; 
selenium.get(baseurl); 

Thread.sleep(2000); 
Thread.sleep(5000); 

WebElement loginbtn = selenium.findElement(By.id("lnkBtnLogin")); 
if(loginbtn.isDisplayed()) { 
    loginbtn.click(); 
} 

WebElement username = selenium.findElement(By.id("txtMobileNumber")); 
if(username.isDisplayed()) { 
    username.clear(); 
    username.sendKeys("******"); 
} 

WebElement pwd = selenium.findElement(By.id("txtMsgPwd")); 
if(pwd.isDisplayed()) { 
    pwd.sendKeys("******"); 
} 

WebElement submit = selenium.findElement(By.id("btnSubmit")); 
if(submit.isDisplayed()) { 
    submit.click(); 
    //Alert aler = selenium.switchTo().alert().accept(); 
    selenium.switchTo().activeElement();   
} 

WebElement conti = selenium.findElement(By.id("btnContinue")); 
if(conti.isDisplayed()) { 
    conti.click(); 
} 

// selenium.close(); 

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: 
{"method":"id","selector":"btnContinue"} 
Command duration or timeout: 31 milliseconds 

답변

0

계속 버튼이 팝업의 일부이므로 (tim 로드하려면), 웹 드라이브를 감지하려면 시간을 할애해야합니다. 이를 위해 Implicit/Explicit waits을 사용하여 제한 시간을 지정하십시오.

위의 경우 암시 적 제한 시간은 입니다.

selenium.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); 

는 상기 webdriver에 15초 시간을 제공 할 때마다 그 요소를 찾으려고. 또한

,이 코드에서 어떤 이상한 이유로

if(conti.isDisplayed()) 

{ 

conti.click(); 

} 

버튼을 계속이을 클릭하기되지 않은 경우 내부 (conti.isDisplayed()) 경우. 그래서 그 고리를 놓치세요. 그냥 을 사용하십시오. conti.click();. 시도 할 때 작동했습니다!

0

안녕하세요

  boolean ajaxPopup = new WebDriverWait(driver,10).until(ExpectedConditions 
       .visibilityOfElementLocated(By.id("btnContinue"))) != null; 

     Assert.assertTrue(ajaxPopup); 
처럼 팝업으로 전환 한 후 명시 적으로 대기의 어떤 종류를 사용하여 내가 오류지고있어이를 실행 한 후
+0

감사합니다. 둘 다 잘 작동합니다 .......... – user3364224

관련 문제