量角器等待元素在DOM中

时间:2015-05-13 03:38:47

标签: angularjs selenium protractor

我在使用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> 

3 个答案:

答案 0 :(得分:57)

您应该可以将browser.waitpresenceOf 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()});