GVKun编程网logo

Selenium IDE – 如何检查元素是否(CSS)可见?(selenium 检查元素是否存在)

6

关于SeleniumIDE–如何检查元素是否(CSS)可见?和selenium检查元素是否存在的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于angularjs–如何使用量角器来检查元素是

关于Selenium IDE – 如何检查元素是否(CSS)可见?selenium 检查元素是否存在的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于angularjs – 如何使用量角器来检查元素是否可见?、angularjs – 如何使用量角器检查元素是否可见?、css – 使用Selenium确定打印介质元素的可见性、javascript – 如何在滚动后检查元素是否可见?等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

Selenium IDE – 如何检查元素是否(CSS)可见?(selenium 检查元素是否存在)

Selenium IDE – 如何检查元素是否(CSS)可见?(selenium 检查元素是否存在)

示例1:检查是否已打开Twitter Bootstrap模式.

模态已存在于页面上,但在使用CSS时隐藏,直到打开模态.那么如何验证模态实际打开了?

示例2:检查是否显示了用户错误消息div.

错误消息div始终存在,但在需要时会使用CSS隐藏.如何验证邮件是否可见?

最佳答案
您可以尝试使用verifyVisible命令.这将查看css以查看是否设置了可见性或显示.如果其中任何一个可见,则返回true,否则返回false.
您需要传入一个定位器.使用由css控制的模态元素.

angularjs – 如何使用量角器来检查元素是否可见?

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 – 如何使用量角器检查元素是否可见?

angularjs – 如何使用量角器检查元素是否可见?

我正在使用量角器软件来结束测试.一些元素正在被设置为ng-show.

有人可以告诉我如何用量角器检查这些元素是否可见?

假设你的元素的ID为“foo”,你可以做到
expect($('#foo').isdisplayed()).toBe(true); // or false to test that it's hidden

要么

expect(element(by.id('foo')).isdisplayed()).toBe(true);

css – 使用Selenium确定打印介质元素的可见性

css – 使用Selenium确定打印介质元素的可见性

我想确定在CSS @media规则控制下打印时页面上的特定元素是否可见.

有没有办法用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 – 如何在滚动后检查元素是否可见?

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 – 如何在滚动后检查元素是否可见?的相关信息,可以在本站进行搜索。

本文标签: