2017-09-14 129 views
0

我有一個按鈕,它被包裹在一個li元素中,在其他元素加載後5秒出現。我必須點擊這個元素,但我無法使用硒訪問這個元素。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我認爲我們可以在按鈕調用click()方法簡單,如下使用ExplicitWaitWebDriverWait

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