2017-09-14 5 views
0

다른 요소가로드 된 후 5 초 후에 나타나는 li 요소 안에 래핑 된 단추가 있습니다. 이 요소를 클릭해야하지만 셀레늄을 사용하여이 요소에 액세스 할 수 없습니다.웹 요소가 셀레늄으로 식별되지 않았습니다.

암시 적 대기, 명시 적 대기 및 유창한 대기를 사용했습니다. Selenium은 TimeoutException 및 NoSuchElementException로 끝나는 요소를 식별 할 수 없습니다.

HTML의 요소 :

<li class="wow zoomIn" data-wow-delay="1.0s" data-reactid=".0.0.0.1.5" style="visibility: visible; animation-delay: 1s; animation-name: zoomIn;"> 
<button class="pip-icon-new" data-role="none" title="PIP" data-reactid=".0.0.0.1.5.0"/> 
<span class="mt10 col-xs-12" data-reactid=".0.0.0.1.5.1">PIP</span> 
</li> 

유창함 기다립니다 :

Wait wait = new FluentWait(driver) 
        .withTimeout(30, TimeUnit.SECONDS) 
        .pollingEvery(5, TimeUnit.SECONDS) 
        .ignoring(NoSuchElementException.class); 

     wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button[data-reactid='.0.0.0.1.5.0']"))); 

명시 기다립니다 :

WebElement myDynamicElement = (new WebDriverWait(driver, 10)) 
        .until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='Home-page']/div[1]/ul/li[5]/button"))); 
       myDynamicElement.click(); 

암시 기다립니다 :

WebDriverWait wait=new WebDriverWait(driver, 20); 
     wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("span[class='mt10 col-xs-12']"))); 

내가 뭔가를 놓친 건가요?

+0

문제가 당신의 선택에있을 수 있습니다. Try with By.cssSelector ("button [title = 'PIP']") – acikojevic

+0

iframe 안에 있습니까? –

+0

@acikojevic 너무 시도해 봤어. 작동하지 않습니다. – kaushik3993

답변

0

제공된 단계/데이터에 따라 PIP이라는 텍스트가있는 버튼을 클릭하고 싶습니다. 이제 HTML을보고 단순히 아래 ExplicitWaitWebDriverWait를 사용하여 우리가 버튼을 click() 메소드를 호출 할 수 있다고 생각 :

WebDriverWait wait = new WebDriverWait(driver, 20); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//li[@class='wow zoomIn']"))); 
driver.findElement(By.xpath("//span[text()='PIP']")).click();