gpt4 book ai didi

angularjs - 在 AngularJS E2E 测试中使用 element().offset()

转载 作者:行者123 更新时间:2023-12-03 06:54:46 25 4
gpt4 key购买 nike

我正在用 Angular 编写一个端到端测试,我想验证一个 DOM 元素相对于另一个 DOM 元素的位置。幸运的是,Angular E2E DSL 有一个 jQuery 的 offset() 方法的直通方法。非常适合我的用例!

但是,我很困惑如何使用此方法返回的对象。对 offset() 的调用返回一个具有 topleft 属性的对象。当我尝试在测试中访问这些属性时,Angular 会提示。

这段代码效果很好:

expect(element("#anID").offset()).toEqual({"top":100,"left":100});

此代码不起作用,并引发错误:

expect(element("#anID").offset().top).toEqual(100);

TypeError: Cannot read property 'name' of undefined
at Object.angular.scenario.matcher.(anonymous function) (http://localhost:8000/test/angular/angular-scenario.js:23994:41)
at Object.executeStatement (http://localhost:8000/test/angular/angular-scenario.js:23960:30)
at Object.chain.(anonymous function) [as toEqual] (http://localhost:8000/test/angular/angular-scenario.js:23968:37)
at Object.<anonymous> (http://localhost:8000/test/E2E-scenarios.js:78:53)

如何使用 offset() 的返回来构建大致如下的期望:

expect(element("#anID").scrollTop() - element("#anotherID").offset().top).toEqual(100);
<小时/>

更新

在与 Josh David Miller 反复讨论之后,我发现我真正的问题是:如何在 Expect() 调用之外获取 angular.scenario.Future 对象的值,以便我可以将其用作基础还有其他期望吗?

最佳答案

Angular mailing list上找到了答案。像这样的东西适用于在单个期望中使用多个 angular.scenario.Future 对象值:

  it('async expectation', function() {
browser().navigateTo('index.html');
var relativeElement = element("#anID").prop( 'offsetTop' )

this.addFuture('ScenarioRunner step title', function(done) {
expect(element('#anotherID').scrollTop()).toEqual(relativeElement.value - 100);
done();
});
});

angular github repo 上有一个 Unresolved 问题以便更优雅地将其集成到 ScenarioRunner 中。

关于angularjs - 在 AngularJS E2E 测试中使用 element().offset(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14569840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com