2017-09-12 3 views
-1

을 식별하려고 할 때 예외를 시간을 얻기 코드입니다 :이 webelemnt 아래

WebElement Username=d1.findElement(By.xpath("//*[@id='username']")); 
Username.sendKeys("aadmin"); 

WebElement Password=d1.findElement(By.xpath("//*[@id='login_form']/tbody/tr/td/table/tbody/tr[12]/td[2]/input")); 
Password.sendKeys("admin"); 

WebElement signin=d1.findElement(By.xpath("//*[@id='submit_']")); 
signin.click(); 

System.out.println("User admin has logged in "+ d1.getTitle()); 
w1.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='spaces-menu']/ul/li[1]"))).click(); 

System.out.println("User Admin clicks on Record button"); 

//Thread.sleep(5000); 
d1.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

//Switching the control 
int size2=d1.findElements(By.tagName("iframe")).size(); 
System.out.println("iframe size is---" + size2); 

WebDriverWait w2= new WebDriverWait (d1, 15);  
//w2.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(0)); 
w2.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.tagName("iframe"))); 

System.out.println("Page title is  "+d1.getTitle()); 

//d1.switchTo().frame("iframe-page-container"); 

//d1.switchTo().frame(d1.findElement(By.tagName("iframe"))); 

WebDriverWait w3= new WebDriverWait (d1,30); 

WebElement New=w3.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@id='capTypePopup']"))); 
    //WebElement New=w3.until(ExpectedConditions.visibilityOfElementLocated(By.className("menu-middle-normal-button"))); 
    //WebElement New=w3.until(ExpectedConditions.visibilityOfElementLocated(By.id("menuButtonContain-6"))); 
    //New.click(); 

    //d1.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
    //JavascriptExecutor js = (JavascriptExecutor) d1; 
    //WebElement element = d1.findElement(By.id("menuButtonContain-6")); 

    //js.executeScript("arguments[0].setAttribute('type', '')",element); 

    //System.out.println(d1.findElement(By.id("menuButtonContain-6")).getAttribute("value")); 


    //Actions a1= new Actions(d1); 
    //a1.moveToElement(New).click(New).build().perform(); 

    //d1.findElement(By.xpath("//*[@id='tr_menubar']/td")); 
    //d1.findElement(By.xpath("//*[@id='capTypePopup']")).click(); 
    //w1.until(ExpectedConditions.elementToBeClickable(By.className("portlet-menu-item"))).click(); 
    //w2.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='capTypePopup']/font"))).click(); 
    System.out.println("Click on the new button"); 

아래는 페이지의 DOM이다, 나는 새로운 버튼을 클릭하는 것을 시도하고있는 iframe을 내부.

enter image description here

+0

이 오류 메시지는 도움을 청하고 제안합니다. By.xpath에있는 요소의 가시성을 기다리는 30 초 후 시간 초과되었습니다. // div [@ id = 'capTypePopup'] 빌드 정보 : 버전 : '2.53.0', 수정 : '35ae25b', 시간 : '2016-03-15 16:57:40' 시스템 정보 : 호스트 : 'SandeepLT02', ip : '10 .4.224.42 ', os.name :'Windows 10 ', os.arch :'amd64 ', os.version : '10 .0', java.version : '1.8.0_144' 드라이버 정보 : org.openqa.selenium.ie.InternetExplorerDriver –

+0

그래도 오류가 발생합니까? 명시 적으로 프레임 d1.switchTo(). 프레임 (d1.findElement (By.tagName ("iframe")))); 을 입력 한 다음 작업을 수행하십시오. 단계별로 디버깅을하더라도 오류가 발생합니까? 기다림이나 다른 문제가있는 경우 좁힐 수 있습니다. –

+0

xpath가 정확하지 않습니다. xpath가 여러 요소를 찾습니다. 난 당신이 요소에 대한 더 많은 xpath를 찾아야한다고 제안 할 것입니다 – iamsankalp89

답변

0

는 XPath : 둘 이상의 요소를 찾을 수 사용

//div[@id='capTypePopup']

은, 셀레늄이 예상하지 하나가 될 수있는 첫 번째 찾기 요소를 사용합니다.

스크린 샷에서 이미 두 개가있는 것으로 나타났습니다. 원하는 div 앞에 하나 더 있어야하며 보이지 않아야합니다.

Dev 도구를 사용하여 //div[@id='capTypePopup']을 테스트하고 첫 번째 발견 된 div가 표시되는지 확인합니다.

표시되지 않으면 원하는 div를 찾을 수있는 더 엄격한 xpath를 사용하십시오. 그 후에 당신의 문제는 사라질 것입니다.

+0

지도 주셔서 감사하지만 아래 구문도 사용했습니다. 오류 메시지가 계속 나타납니다. –

+0

WebDriverWait w3 = 새 WebDriverWait (d1,30); \t \t \t \t WebElement New = w3.until (ExpectedConditions.visibilityOfElementLocated (by portName - "portlet-menu-item")))); –

+0

@Ashish : 스위치가 정상적으로 작동합니다. –