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

在PhantomJS中设置元素高度

雷飞虎
2023-03-14
问题内容

在PhantomJS中进行测试时如何设置元素高度?

我正在使用Jasmine框架在Karma上进行测试,并在PhantomJS无头浏览器上运行。我正在尝试测试与“无限滚动”(当用户滚动到容器元素底部附近时自动加载项目)有关的AngularJS指令。我
使用jQuery,也不希望(除非没有其他方法)。我正在使用 .clientHeight.scrollTop
.scrollHeight 属性。我的指令至少在Chrome中可以正常工作。

我尝试为指令设置测试,但是找不到找到高度非零的元素的方法。以下代码让我不高兴:

describe('something', function () {
    it('works with element height', inject(function ($document) {
        var el = angular.element('<div>Lorem ipsum...</div>')[0];
        $document.append(el);
        // size of non-empty block element should be non-zero by default
        expect(el.clientHeight).not.toBe(0);
        expect(el.scrollHeight).not.toBe(0);
        // it should certainly be non-zero after the height is set manually
        el.style.height = '999px';
        expect(el.clientHeight).not.toBe(0);
        expect(el.scrollHeight).not.toBe(0);
    }));
});

我究竟做错了什么?有可能做我想做的事吗?

__

使用设置元素高度element.style.height效果很好。我只是没有将元素正确地附加到文档主体中。


问题答案:

我认为问题在于$
document。您需要定义哪个文档并找到body元素并将其附加到该元素。此代码现在经过我在PhantomJS,通过更换$documentangular.element($document[0].body)

it('works with element height', inject(function ($document) {
    var el = angular.element('<div>Lorem ipsum...</div>')[0];

    //Find the correct body element
    angular.element($document[0].body).append(el);

    // size of non-empty block element should be non-zero by default
    expect(el.clientHeight).to.not.equal(0);
    expect(el.scrollHeight).to.not.equal(0);
    // it should certainly be non-zero after the height is set manually
    el.style.height = '999px';
    expect(el.clientHeight).to.not.equal(0);
    expect(el.scrollHeight).to.not.equal(0);
}));


 类似资料:
  • 问题内容: 如何单击PhantomJS中的元素? 这给我一个错误“未定义不是函数…” 如果我代替 然后打印 然后打印[object object],因此该元素确实存在。 该元素充当按钮,但实际上只是一个span元素,而不是Submit输入。 我可以单击此按钮来与Casper一起使用,但是Casper还有其他限制,所以我回到PhantomJS。 问题答案: 不是标准的。您需要创建一个事件并调度它:

  • 问题内容: 我有一组元素,要求它们的最小宽度等于它们的高度,但是高度没有明确设置。目前,我可以通过jQuery 设置css 属性来实现此目的: 是否可以直接在CSS中指定此行为? 问题答案: 我不相信没有JS,这是不可能的,但是也许有人可以证明我错了? CSS不允许您使用动态变量,因此,如果在页面加载之前未设置高度,我不确定该怎么做。

  • 问题内容: 我是AngularJS新手。我想创建网格(使用ng-grid),其高度取决于窗口高度,即。 我已经写了指令: 当我调整浏览器窗口的大小但在第一次加载网站时未应用样式时,此方法效果很好。我可以在哪里放置代码以初始化身高? 问题答案: 我在为自己寻找解决同一问题的方法时遇到了您的帖子。我使用了基于多个帖子的指令来组合以下解决方案。您可以在这里尝试(尝试调整浏览器窗口的大小):http: /

  • 如何根据具有绝对位置的子元素高度增加具有相对位置的父元素的高度。 在下面的例子中,父元素的高度显示为0px PS:我不想使用任何脚本 预期: 我得到的是: JSFIDLE 超文本标记语言: CSS:

  • 如何在Elm中设置Html元素的焦点?我试图在元素上设置自动聚焦属性,它只在页面加载上设置焦点。

  • 本文向大家介绍在Bootstrap中为元素设置白色边框,包括了在Bootstrap中为元素设置白色边框的使用技巧和注意事项,需要的朋友参考一下 在Bootstrap 4中使用border-white类来为元素设置白色边框。 上面的测试类为元素设置样式,如下所示- 让我们看一个在Bootstrap中实现border-white类的示例- 示例