首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Intern: Polling Intern元素可见

Intern: Polling Intern元素可见
EN

Stack Overflow用户
提问于 2015-09-17 00:48:17
回答 2查看 481关注 0票数 1

在Intern中有没有一种方法可以让我轮询,直到元素可见?我网站中的许多元素都在dom中,但却是隐藏的,所以每次我在应该出现的元素x之后执行"find for“元素时,它都会失败,因为该元素明显破坏了selenium检查的一个可见属性。

我试过助手函数"pollUntil“,但我似乎不能让它工作。Dojo似乎不喜欢document.getElement*()

传入pollUntil的帮助器函数

代码语言:javascript
复制
//this is a helper function for pollUntil
//first we want to find an element by class name and text
var elementVisibleAndText = function(elems, innerText){
        elems = document.getElementsByClassName(elems);
        //if we can't even find it, we return null
        //but if we do find it, we want to return a
        //not null element
        if (!elems || elems.length == 0){
            return null; 
        }

        //now let's look at all of the elements found by
        //in elems, and see if the innerHTML matches. If it 
        //does then we want to return that it was found
        var each;
        for(each in elems){
            if(elems[each].innerHTML == innerText)
                return (elems[each].offsetWidth > 0 && elems[each].offsetHeight > 0) ? elems[each] : null;
        }
        //else return null if nothing is found in the elements

        return null;
};  
EN

回答 2

Stack Overflow用户

发布于 2015-09-18 05:28:44

查看https://theintern.github.io/leadfoot/pollUntil.html。实习生使用leadfoot -所以你应该有权使用这个功能。

代码语言:javascript
复制
var Command = require('leadfoot/Command');
var pollUntil = require('leadfoot/helpers/pollUntil');

new Command(session)
    .get('http://example.com')
    .then(pollUntil('return document.getElementById("a");', 1000))
    .then(function (elementA) {
        // element was found
    }, function (error) {
        // element was not found
    });

要在其中一个测试中使用该函数,您需要使用以下路径导入它:

代码语言:javascript
复制
'intern/dojo/node!leadfoot/helpers/pollUntil'
票数 1
EN

Stack Overflow用户

发布于 2015-10-15 07:07:28

我经常遇到这个问题,我们使用intern的pollUntil功能编写了一些辅助工具。在我们的测试中,我们使用像.then(pollUntil(util.element_visible_by_class(), ['toast_notification'], 22000))这样的东西

在一个单独的util.js文件中

代码语言:javascript
复制
/**
 * Our shared utility for unit testing
 */
define([
    'intern!object',
    'intern/chai!assert',
    'require',
    'intern/dojo/node!leadfoot/helpers/pollUntil'

], function (registerSuite, assert, require, util, pollUntil) {
    return {
        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;
            }  
        },

        element_visible_by_id: function(elem) {
            return function(elem) {
                elem = document.getElementById(elem);
                if (!elem) { return null; }
                return (elem.offsetWidth > 0 && elem.offsetHeight > 0) ? elem : null;
            }  
        },
        element_hidden_by_id: function(elem) {
            return function(elem) {
                elem = document.getElementById(elem);
                if (!elem) { return null; }
                return (elem.offsetWidth > 0 && elem.offsetHeight > 0) ? null : elem;
            }  
        },
        element_hidden_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) ? null : elem;
            }  
        },
    }
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32614332

复制
相关文章

相似问题

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