![](/img/trans.png)
[英]How to interact with an element that is hidden using Selenium Webdriver?
[英]How to identify a hidden file element in selenium webdriver
球队,
我正在尝试自动执行文件上传功能,但Webdriver无法识别文件对象。 这是东西:
以下是我的代码。 我已经尝试了stackoverflow中提供的所有可能的解决方案(尽我所能搜索),但是没有任何效果。 注释掉的部分意味着它们也同样遭到尝试和失败。
wbdv.findElement(By.xpath("//*[@id='left-container']/div[4]/ul/li/ul/li[2]/a")).click();
wbdv.switchTo().activeElement();
System.out.println(wbdv.findElement(By.xpath("//*[@id='modalBoxBody']/div[1]")).isDisplayed()); **//This returns true**
List<WebElement> we = wbdv.findElement(By.xpath("//*[@id='modalBoxBody']/div[1]")).findElement(By.className("modalBoxBodyContent")).findElements(By.name("url")); **//There is only one element named url in this hierarchy**
System.out.println(we.isEmpty()); //This returns false meaning it got the element named url
//((JavascriptExecutor) wbdv).executeScript("document.getElementsByName('url')[0].style.display='block';"); **//This didn't work**
for(WebElement ele: we){
String js = "arguments[0].style.height='auto'; arguments[0].style.visibility='visible';";
((JavascriptExecutor) wbdv).executeScript(js, ele);
System.out.println(ele.isDisplayed()); **//This returns FALSE**
System.out.println(ele.isEnabled()); **//This returns TRUE**
System.out.println(ele.isSelected()); **//This returns FALSE**
ele.click(); **//This throws org.openqa.selenium.ElementNotVisibleException exception**
}
现在,如果您查看上面的3种方法,则似乎未显示该元素,未选中该元素,但已启用IS。 因此,当硒不显示时,硒无法识别它。 使它可见的Java脚本也无法挽救。
谁能帮我解决这个问题。 今天吃了一整天吗?
在您的最后一个示例中,使用'style.visibility'标记对您来说似乎是正确的主意。 我建议尝试尝试的另一件事是使用“ ExpectedConditions.visibilityOfElementLocatedBy”方法。 通常,我使用“ presenceOfElementLocatedBy”,但是如果您谈论的是CSS可见性属性,我认为使用“ visibilityOfElementLocatedBy”是可行的方法。 我认为对您来说可能会发生的事情是,您需要等待要保留的元素对象的等待条件,而“ ExpectedCondtions”方法应该为您提供所需的条件。 我看到您尝试了一些操作,但没有使用Wait条件列出 。 没有保证,但是您应该尝试:
WebDriverWait wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.visibilityOfElementLocated(
By.xpath(".//whatever")))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.