2017-02-08 32 views
1

下拉元素不可見,但它是啓用和呈現的。下拉元素使用硒不可見TestNG

我已經嘗試了一切,但我沒有選擇。請幫忙。我的目標是點擊將顯示文本字段以輸入字符串的下拉列表。

代碼片段:

if(driver.findElements(By.xpath("//*[@id='s2id_autogen3']"))!= null){ 
     System.out.println("Element is Present"); 
    }else{ 
     System.out.println("Element is Absent"); 
    } 

    if(driver.findElement(By.xpath("//*[@id='s2id_autogen3']")).isDisplayed()){ 
     System.out.println("Element is Visible"); 
    }else{ 
     System.out.println("Element is InVisible"); 
    } 

    if(driver.findElement(By.xpath("//*[@id='s2id_autogen3']")).isEnabled()){ 
     System.out.println("Element is Enable"); 
    }else{ 
     System.out.println("Element is Disabled"); 
    } 

輸出:

元素存在 元素不可見 元素啓用

enter image description here

+0

你試過等待頁面完全加載嗎?父div有以下屬性:'數據綁定=「看得見!CanSelectBroker()&& IsLoadingBrokers()」'什麼是這些功能的價值?可能與它有關。 – becixb

+0

可以取代'driver.findElements(By.xpath( 「// * [@ ID = 's2id_autogen3']」))!= null'用'driver.findElements(By.xpath(「// * [@ ID = 's2id_autogen3']「))。大小()!= 0'在你的第一** **如果語句和共享輸出? – Mahipal

+0

馬希普爾,輸出仍然是元素存在 –

回答

0

您可以webdriver的等到的知名度需要下拉,然後點擊它。試試下面,讓我知道,它是否解決您的問題:

WebDriverWait wait = new WebDriverWait(driver, 60); 
wait.until(
      ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='s2id_autogen3']"))); 

在上面的代碼,會的webdriver等待最多60秒所需的下拉變得可見。如果即使在60秒後下拉不可見,它也會失敗並出現超時錯誤。

+0

謝謝Mahipal。我嘗試過3次,它總是有效。 –

+0

太好了。不用謝。你能否接受我的答案並將其標記爲有用,如果它有用並解決了你的問題? – Mahipal

0

Mahipal的答案必須工作。其他原因可能是框架。確保下拉框不在框內。

+2

它應該是評論 – NarendraR

+0

謝謝Narendra .. btw我剛開始回答stackoverflow。我將遵循相同的未來。 –