当前位置: 首页 > 面试题库 >

如何使用量角器测试元素是否具有类?

傅涵忍
2023-03-14
问题内容

我正在尝试量角器以e2e测试Angular应用程序,但还没有弄清楚如何检测元素是否具有特定的类。

就我而言,测试单击了提交按钮,现在我想知道form [name =“ getoffer”]是否具有类.ngDirty。有什么解决方案?

describe('Contact form', function() {
    beforeEach(function(){
        browser.get('http://localhost:9000');
        element(by.linkText('Contact me')).click();
    });

    it('should fail form validation, all fields pristine', function() {
        element(by.css('.form[name="getoffer"] input[type="submit"]')).click();
        expect(element(by.name('getoffer'))).toHaveClass('ngDirty'); // <-- This line
    });
});

问题答案:

您必须注意的是,使用时要注意的一个问题toMatch()是部分匹配。例如,假设您有一个可能具有类correct和的元素incorrect,并且您想测试它是否具有类correct。如果要使用expect(element.getAttribute('class')).toMatch('correct'),即使元素具有incorrect类,也将返回true

我的建议:

如果您只想接受完全匹配,则可以为其创建一个辅助方法:

var hasClass = function (element, cls) {
    return element.getAttribute('class').then(function (classes) {
        return classes.split(' ').indexOf(cls) !== -1;
    });
};

您可以这样使用它(利用expect自动在量角器中兑现承诺的事实):

expect(hasClass(element(by.name('getoffer')), 'ngDirty')).toBe(true);


 类似资料:
  • 问题内容: 我正在尝试使用量角器测试元素是否可见。元素的外观如下: 在chrome控制台中时,我可以使用此jQuery选择器测试该元素是否可见: 但是,当我尝试在量角器中执行相同操作时,在运行时出现此错误: 为什么这无效?如何使用量角器检查可见性? 问题答案: 应该这样做: 记住量角器的不是jQuery和不_尚_的一部分提供CSS选择器+伪选择

  • 问题内容: 我有一个脱机菜单,可以在网站上完美运行。用户既可以使用导航键也可以用手指滑动它来打开和关闭它。 现在,我有一个非常不错的navicon图标,当单击(并打开菜单)时,它会从菜单图标过渡到X图标,反之,当再次单击并关闭菜单时,它又会转变为X图标。Buuut,如果用户将菜单滑动到打开或关闭而不是使用导航按钮的状态,则不会触发过渡,这可能会导致UX混乱(即,菜单被关闭,并且导航按钮显示X而不是

  • 问题内容: 在量角器端到端测试中,我想使用我的代码element(by.css(…))检查某个元素是否存在: 该测试失败,它说: 之后,我尝试使用一个承诺: 这将导致错误: 错误:使用定位器By.CssSelector(…)未找到任何元素 是的,我知道将找不到任何元素,但是如何使用element()创建工作测试? 有谁知道如何实现这一目标?还是不是这里使用的方法? 问题答案: 您可以通过检查是否存

  • 我是新的量角器,我正在执行一些e2e测试,我在最后一个问题,当我试图调用下拉列表并选择其中一个选项时。 这是我的代码: 我每次得到的是: 这个错误怎么可能? 提前感谢您的帮助。

  • 问题内容: 今天,我一直在努力处理以下这些量角器代码行: 放在语句后似乎总是失败。 错误输出太模糊: UnknownError:JavaScript错误:等待结果时卸载文档 那么,单击超链接并检查新URL的正确方法是什么? 这是我的测试: 如果我在点击链接之前, 测试将通过。 如果我点击链接后, 上面的输出在Protractor中引发错误。什么地方出了错? 问题答案: 不用调用,而是 等待URL更

  • 问题内容: 我目前正在使用Protractor为不起眼的Angular应用编写一些e2e测试。 我的应用程序运行良好,单元测试通过了所有测试,也使用了e2e …直到这一项: appE2ESpec.js 这就是我编写测试的方式,但是, 问题是: items.count()返回一个promise, 我知道 ,但是我无法迫使Protractor解决它。所以我得到这个: 我尝试过的 但得到的最终结果相同.