2017-02-08 102 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。我将遵循相同的未来。 –