关于SeleniumIDE–如何检查元素是否(CSS)可见?和selenium检查元素是否存在的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于angularjs–如何使用量角器来检查元素是
关于Selenium IDE – 如何检查元素是否(CSS)可见?和selenium 检查元素是否存在的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于angularjs – 如何使用量角器来检查元素是否可见?、angularjs – 如何使用量角器检查元素是否可见?、css – 使用Selenium确定打印介质元素的可见性、javascript – 如何在滚动后检查元素是否可见?等相关知识的信息别忘了在本站进行查找喔。
本文目录一览:- Selenium IDE – 如何检查元素是否(CSS)可见?(selenium 检查元素是否存在)
- angularjs – 如何使用量角器来检查元素是否可见?
- angularjs – 如何使用量角器检查元素是否可见?
- css – 使用Selenium确定打印介质元素的可见性
- javascript – 如何在滚动后检查元素是否可见?
Selenium IDE – 如何检查元素是否(CSS)可见?(selenium 检查元素是否存在)
示例1:检查是否已打开Twitter Bootstrap模式.
模态已存在于页面上,但在使用CSS时隐藏,直到打开模态.那么如何验证模态实际打开了?
示例2:检查是否显示了用户错误消息div.
错误消息div始终存在,但在需要时会使用CSS隐藏.如何验证邮件是否可见?
您需要传入一个定位器.使用由css控制的模态元素.
angularjs – 如何使用量角器来检查元素是否可见?
<ing-show="saving"></i>
在Chrome控制台中,我可以使用此jQuery选择器来测试元素是否可见:
$('[ng-show=saving].icon-spin') [ <i class="icon-spinner icon-spin ng-hide" ng-show="saving"></i> ] > $('[ng-show=saving].icon-spin:visible') []
但是,当我尝试做同样的量角器,我得到这个错误在运行时:
InvalidElementStateError: invalid element state: Failed to execute 'querySelectorAll' on 'Document': '[ng-show=saving].icon-spin:visible' is not a valid selector.
为什么这是无效的?如何使用量角器检查可见性?
expect($('[ng-show=saving].icon-spin').isdisplayed()).toBeTruthy();
记住量角器的$不是jQuery和:visible不是available CSS selectors + pseudo-selectors的一部分
更多信息http://stackoverflow.com/a/13388700/511069
angularjs – 如何使用量角器检查元素是否可见?
有人可以告诉我如何用量角器检查这些元素是否可见?
expect($('#foo').isdisplayed()).toBe(true); // or false to test that it's hidden
要么
expect(element(by.id('foo')).isdisplayed()).toBe(true);
css – 使用Selenium确定打印介质元素的可见性
有没有办法用Selenium做到这一点?
我知道有isDisplayed方法,它考虑了CSS,但我无法找到告诉Selenium应用哪种媒体类型.
有没有办法做到这一点?
或者是否有另一种方法来测试网页以确保打印所需的元素(以及那些不打印的元素)?
更新:
为清楚起见,没有计划使用javascript打印按钮.用户将使用浏览器的常规打印功能(Chrome,FF和IE)进行打印. @media css规则将用于控制显示和隐藏的内容.我希望Selenium假装它是打印机而不是屏幕,所以我可以测试某些元素是否会在页面的打印版本中可见.
解决方法
您需要使用Selenium注入以下JavaScript:
(function pretendToBeAPrinter() { //For looking up if something is in the media list function hasMedia(list,media) { if (!list) return false; var i = list.length; while (i--) { if (list[i] === media) { return true; } } return false; } //Loop though all stylesheets for (var styleSheetNo = 0; styleSheetNo < document.styleSheets.length; styleSheetNo++) { //Current stylesheet var styleSheet = document.styleSheets[styleSheetNo]; //Output debug information console.info("Stylesheet #" + styleSheetNo + ":"); console.log(styleSheet); //First,check if any media queries have been defined on the <style> / <link> tag //disable screen-only sheets if (hasMedia(styleSheet.media,"screen") && !hasMedia(styleSheet.media,"print")) { styleSheet.disabled = true; } //display "print" stylesheets if (!hasMedia(styleSheet.media,"screen") && hasMedia(styleSheet.media,"print")) { //Add "screen" media to show on screen styleSheet.media.appendMedium("screen"); } // Get the CSS rules in a cross-browser compatible way var rules; try { rules = styleSheet.cssRules; } catch (error) { console.log(error); } try { rules = styleSheet.rules; } catch (error) { console.log(error); } // Handle cases where styleSheet.rules is null if (!rules) { continue; } //Second,loop through all the rules in a stylesheet for (var ruleNo = 0; ruleNo < rules.length; ruleNo++) { //Current rule var rule = rules[ruleNo]; //Hide screen-only rules if (hasMedia(rule.media,"screen") && !hasMedia(rule.media,"print")) { //Rule.disabled doesn't work here,so we remove the "screen" rule and add the "print" rule so it isn't shown console.info('Rule.media:'); console.log(rule.media) rule.media.appendMedium(':not(screen)'); rule.media.deleteMedium('screen'); console.info('Rule.media after tampering:'); console.log(rule.media) } //display "print" rules if (!hasMedia(rule.media,"screen") && hasMedia(rule.media,"print")) { //Add "screen" media to show on screen rule.media.appendMedium("screen"); } } } })()
你可以see it in action at JSFiddle.
小书签
你也可以install it as a bookmarklet.
更多信息:
> About mediaList
> About document.styleSheets
注意:我只在Google Chrome和Mozilla Firefox中对此进行了测试.它可能会或可能不会在其他浏览器中工作.
javascript – 如何在滚动后检查元素是否可见?
我正在通过AJAX加载元素.只有向下滚动页面时,其中一些才可见.
有什么方法我可以知道一个元素现在是否在页面的可见部分?
解决方法:
这应该做的伎俩:
function isScrolledIntoView(elem)
{
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();
return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}
简单实用功能
这将允许您调用一个实用程序函数,该函数接受您正在查找的元素,以及您是否希望元素完全在视图中或部分在视图中.
function Utils() {
}
Utils.prototype = {
constructor: Utils,
isElementInView: function (element, fullyInView) {
var pagetop = $(window).scrollTop();
var pageBottom = pagetop + $(window).height();
var elementTop = $(element).offset().top;
var elementBottom = elementTop + $(element).height();
if (fullyInView === true) {
return ((pagetop < elementTop) && (pageBottom > elementBottom));
} else {
return ((elementTop <= pageBottom) && (elementBottom >= pagetop));
}
}
};
var Utils = new Utils();
用法
var isElementInView = Utils.isElementInView($('#flyout-left-container'), false);
if (isElementInView) {
console.log('in view');
} else {
console.log('out of view');
}
我们今天的关于Selenium IDE – 如何检查元素是否(CSS)可见?和selenium 检查元素是否存在的分享就到这里,谢谢您的阅读,如果想了解更多关于angularjs – 如何使用量角器来检查元素是否可见?、angularjs – 如何使用量角器检查元素是否可见?、css – 使用Selenium确定打印介质元素的可见性、javascript – 如何在滚动后检查元素是否可见?的相关信息,可以在本站进行搜索。
本文标签: