在Intern中有没有一种方法可以让我轮询,直到元素可见?我网站中的许多元素都在dom中,但却是隐藏的,所以每次我在应该出现的元素x之后执行"find for“元素时,它都会失败,因为该元素明显破坏了selenium检查的一个可见属性。
我试过助手函数"pollUntil“,但我似乎不能让它工作。Dojo似乎不喜欢document.getElement*()
传入pollUntil的帮助器函数
//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;
}; 发布于 2015-09-18 05:28:44
查看https://theintern.github.io/leadfoot/pollUntil.html。实习生使用leadfoot -所以你应该有权使用这个功能。
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
});要在其中一个测试中使用该函数,您需要使用以下路径导入它:
'intern/dojo/node!leadfoot/helpers/pollUntil'发布于 2015-10-15 07:07:28
我经常遇到这个问题,我们使用intern的pollUntil功能编写了一些辅助工具。在我们的测试中,我们使用像.then(pollUntil(util.element_visible_by_class(), ['toast_notification'], 22000))这样的东西
在一个单独的util.js文件中
/**
* 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;
}
},
}
})https://stackoverflow.com/questions/32614332
复制相似问题