2017-09-14 5 views
0

他の要素がロードされてから5秒後に表示されるli要素内にラップされたボタンがあります。この要素をクリックする必要がありますが、この要素にセレンを使用してアクセスすることはできません。Web要素がセレンで特定されていない

暗黙の待機、明示的な待機、流暢な待機を使用しています。 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

問題はあなたの選択である可能性があります。 By.cssSelector( "button [title = 'PIP']")で試してください。 – acikojevic

+0

はiframe内にありますか? –

+0

@acikojevicそれも試しました。それは動作していません。 – kaushik3993

答えて

0

入力した手順やデータに基づいて、PIPのボタンをクリックしたいと思います。今、HTMLを見て、私は単純に以下のようにExplicitWaitすなわちWebDriverWaitを使用して、我々はボタンの上に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(); 
関連する問題