我在使用Protractor时遇到了一些麻烦。我有一个非常奇怪的ui-router状态,很难从其他元素开始处理页面。有没有办法让量角器等到元素最终出现在DOM中?不可见/显示,但实际创建?我一直在尝试使用等待元素,但显然无法选择。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript" src="hint2.js"></script>
答案 0 :(得分:57)
您应该可以将browser.wait
与presenceOf
ExpectedCondition一起使用:
var until = protractor.ExpectedConditions;
browser.wait(until.presenceOf(elem), 5000, 'Element taking too long to appear in the DOM');
答案 1 :(得分:12)
量角器已将ExpectedCondition包含在显式等待中,让您等待元素一段时间。您应该能够执行以下操作:
for (var i = selectedRows.length; i--;) {
var selectedRowNum = selectedRows[i];
console.log('outer selectedRowNum');
console.log(selectedRowNum);
var url = urlbase + '/' + this.state.data[selectedRowNum].id;
request
.del(url)
.end(function(selectedRowNum, err, res) {
var data = this.state.data.slice();
data.splice(selectedRowNum, 1);
this.setState({data: data});
this.forceUpdate();
}.bind(this, selectedRowNum));
};
答案 2 :(得分:-5)
browser.wait的第一个参数是一个函数,如果我们需要等到一个元素存在而不考虑时间,那么我们可以使用下面的代码,如果你需要将等待时间限制在特定时间请给出时间作为'browser.wait'的第二个参数
browser.wait(function() {
return element(by.css("#edudrop1")).isPresent()});