Selenium-webdriver (Java Script) 等待元素消失
Selenium-webdriver (Java Script) wait for element to disappear
driver.wait(until.elementIsPresent(By.css(".popup-backdrop fade")), 15000);
我该如何做与此相反的事情?我想等到".popup-backdrop fade"叠加层消失后再单击元素。
我正在使用Selenium-webdriver(使用Javascript,而不是使用Java,Python或C#(
在代码源中未找到负等待。解决方案是实现您自己的条件:
var webdriver = require('selenium-webdriver');
var until = webdriver.until;
var By = webdriver.By;
until.elementIsNotPresent = function elementIsNotPresent(locator) {
return new until.Condition('for no element to be located ' + locator, function(driver) {
return driver.findElements(locator).then(function(elements) {
return elements.length == 0;
});
});
};
driver.wait(until.elementIsNotPresent(By.css(".popup-backdrop fade")), 15000);
如已接受问题的评论所示,直到。条件不是硒 4 中的有效构造函数。相反,可以这样做:
const { By, until, Condition } = require('selenium-webdriver');
until.elementIsNotPresent = function elementIsNotPresent(locator) {
return new Condition('for no element to be located ' + locator, function(driver) {
return driver.findElements(locator).then(function(elements) {
return elements.length === 0;
});
});
};
有关使用条件的参考,可在此处找到:https://github.com/seleniumhq/selenium/issues/2755
这是问题的另一种解决方案,更内联(但它有效,而不是接受的答案崩溃"TypeError:直到。条件不是构造函数"(:
await this._webDriver.wait(() => {
return this._webDriver.findElements(By.id('loadingIndicator')).then(function(found) {
return found.length === 0;
});
}, 3000, 'The element should disappear');
你也可以尝试这样的事情:
let faderElement = webdriver.By.css('.fader');
driver.wait(webdriver.until.elementLocated(faderElement));
let faderElementFound = driver.findElement(faderElement);
driver.wait(webdriver.until.elementIsVisible(faderElementFound));
driver.wait(webdriver.until.elementIsNotVisible(faderElementFound));
好消息,它现在已经内置了
看起来在给出之前的答案后,elementIsNotVisible
已被添加到until
中。我正在使用硒网络驱动程序4.0.0-beta.3
看看吧:
const timeout = 60 * 1000; // 60 seconds
const element = await driver.findElement(By.id(elementId));
// this is the important line
await driver.wait(until.elementIsNotVisible(element), timeout);
相关文章:
- Chrome扩展:等待元素加载(async js)
- jQuery-等待此元素,然后执行1次
- 如何正确地等待元素获得正确的宽度,然后在Angular 2中访问它
- Selenium-webdriver (Java Script) 等待元素消失
- Selenium webdriver JS-如何等待元素可见
- 在promise链中等待DOM元素中的突变
- jQuery文档是否准备好等待通过Backbone动态注入的html元素
- 在 Capybara 中,如何让 #find 等待具有相同类的不同元素出现
- 无法在 jquery 中获取元素动画以等待另一个元素动画
- 实现等待元素存在 N 秒,然后使用 JavaScript 和 jQuery lib 与元素交互
- 等待元素更改其值(文本)
- 如何在WebDriverJS中等待元素可点击
- 如何在phantomjs中等待元素可见性
- 指令如何等待元素'动态插值属性被处理?
- 等待元素显示给用户
- MutationObserver错误:我怎么能等待元素的创建呢?
- Selenium:如何等待元素的文本发生变化
- onsenui 2等待元素被加载
- 我如何使用量角器和我的文件配置等待元素出现?
- 等待元素出现Javascript不触发Raise事件