Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将elementIsNotVisible与selenium webdriver for javascript一起使用_Javascript_Selenium_Selenium Webdriver_Webdriver_Promise - Fatal编程技术网

无法将elementIsNotVisible与selenium webdriver for javascript一起使用

无法将elementIsNotVisible与selenium webdriver for javascript一起使用,javascript,selenium,selenium-webdriver,webdriver,promise,Javascript,Selenium,Selenium Webdriver,Webdriver,Promise,我无法通过使用Selenium JavaScript Webdriver的elementIsNotVisible条件来确定元素是否不存在。该条件需要webdriver.WebElement对象,但这是不可能的,因为该元素可能已从页面中消失,从而导致出现NoTouchElementException。使用driver.findElement()将不起作用,因为它返回WebElementPromise对象 driver.wait(until.elementIsNotVisible(driver.fi

我无法通过使用Selenium JavaScript Webdriver的
elementIsNotVisible
条件来确定元素是否不存在。该条件需要webdriver.WebElement对象,但这是不可能的,因为该元素可能已从页面中消失,从而导致出现
NoTouchElementException
。使用
driver.findElement()
将不起作用,因为它返回
WebElementPromise
对象

driver.wait(until.elementIsNotVisible(driver.findElement(By.css('div.bg-danger > div'))));
var element = driver.findElement(By.css('div.bg-danger > div')); // WebElement
driver.wait(until.elementIsNotVisible(element)); // not a WebElementPromise

如何解决我的头发撕裂问题?

elementIsNotVisible
创建一个条件,当您要验证元素是否存在于
DOM
中时,该条件将等待给定元素位于
DOM
中,但用户不可见

wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector("div.bg-danger > div")));
因此,您无法确定元素是否存在于
DOM
中,或者是否未使用
elementIsNotVisible
,因为它假定元素位于
DOM
中,而现在它不可见

driver.findElement()
返回元素或
NoSuchElementException
,因此可以通过处理异常来确定元素是否存在

确定元素存在的最佳方法是使用
driver.findElements()
,它返回元素列表或空列表。因此,您只需检查其长度,如下所示:-

var elements = driver.findElements(By.css('div.bg-danger > div'));
if(elements.length == 0) {
   console.log("element not visible");
}

这确实是Java中的解决方案,但不幸的是,[JavaScript API]()中没有invisibilityOfElementLocated。elementIsNotVisible是我所知道的最接近的等价物。这在很大程度上解决了我的问题。我将通过投票的承诺来找出如何做到这一点。谢谢