首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setFindTimeout和pollUntil与Intern一起用于初始页面加载中不可见的元素

setFindTimeout和pollUntil与Intern一起用于初始页面加载中不可见的元素
EN

Stack Overflow用户
提问于 2014-10-02 18:03:08
回答 1查看 1.5K关注 0票数 6

我有一个问题,让实习生2等待元素出现。在Intern 1中,我使用wait()设置页面的快速时间段,以等待某个用户操作后出现的元素。对于Intern 2,似乎有setFindTimeout(),它应该总是告诉find()方法等待元素出现。我已经设置了setFindTimeout(),并尝试使用pollUntil来处理这些等待,但是测试仍然失败,错误“元素不可见”。

下面是一个示例测试,它使用与实际测试相同的要求,并正在寻找一个元素Id,该Id在此页面加载后5秒出现。

代码语言:javascript
复制
define([
'intern!object',
'intern/chai!assert',
'require',
'tests/util',
'intern/dojo/node!leadfoot/Command',
'intern/dojo/node!leadfoot/Session',
'intern/dojo/node!leadfoot/helpers/pollUntil'
], function (registerSuite, assert, require, util, Command, Session, pollUntil) {

registerSuite([   
    {
        name: 'testing_find_by_wait',

        test_create_form_on_web: function() {
            console.log('Create a form with account, number, number and formula fields')

            return this.remote
                .setFindTimeout(10000)
                .setWindowSize(1280, 960)
                .get("http://www.kgstew.com/waittest.html")
                .then(pollUntil('return document.getElementById("demo")', 10000))
                .findById('demo')
                    .click()
                    .end()

        }
    }
]);
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-07 22:20:11

谢谢Snover帮我解决了这个问题。

我误解了setFindTimeout()pollUntil的工作方式。它们都在寻找DOM中存在的元素(以前是这样),但是如果在发出click()命令时元素不可见(即样式为click()),则测试将失败。

我们想要做的是等待元素在某种用户操作之后出现。从greater那里得到了监视element.offsetWidth的想法,使其大于0。

我们在测试套件中创建了以下实用程序。

代码语言:javascript
复制
element_visible_by_class: function(elem) {
    return function(elem) {
        elem = document.getElementsByClassName(elem);
        if (!elem || elem.length == 0) { return null; }
        elem = elem[0];
        return (elem.offsetWidth > 0 && elem.offsetHeight > 0) ? elem : null;
     }  
},

现在,从任何测试中,我们可以调用.then(pollUntil(util.element_visible_by_class(), ['class_name'], 10000)),它将等待直到页面上可见该元素。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26166758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档