1

我有一个使用 .NET 呈现并包含 c# .net 代码的页面。我正在使用 phantomjs GhostDriver 使用 protractorjs 对此进行测试。但是,页面加载时我似乎遇到了问题。

如果我运行这个测试

it('should redirect to login', function () {
    targetUrl = 'http://localhost:52254/';
    ptor = protractor.getInstance();
    ptor.ignoreSychronization = true;
    ptor.get(targetUrl);
    ptor.wait(function () {
        return ptor.driver.getCurrentUrl().then(function (url) {
            return targetUrl = url;
        }, 2000, 'It\'s taking to long to load ' + targetUrl + '!');
    });
    expect(ptor.driver.getCurrentUrl()).toBe('http://localhost:52254/');
}, 5000);

一切都很好,我在我期望的地方

但是如果我运行下面的测试,除了我在页面上搜索一个元素之外它是相同的

it('should redirect to login', function () {
    targetUrl = 'http://localhost:52254/';
    ptor = protractor.getInstance();
    ptor.ignoreSychronization = true;
    ptor.get(targetUrl);
    ptor.wait(function () {
        return ptor.driver.getCurrentUrl().then(function (url) {
            return targetUrl = url;
        }, 2000, 'It\'s taking to long to load ' + targetUrl + '!');
    });

    ptor.driver.findElement(by.id('headerLoginBtn')).click().then(function () {
        expect(ptor.driver.getCurrentUrl()).toBe('http://localhost:52254/Account/Login');
    });
}, 5000);

我得到如下所示的异常

UnknownError: Error Message => 'Element is not currently visible and may not be manipulated'    

使用 chrome 驱动程序运行时测试运行良好,但在 phantomjs 中失败。我在这里遗漏了什么,还是对 phantomjs 的 ia 限制,它不会针对前端 .NET 代码运行。

4

2 回答 2

0

有时 phantomjs 中的测试会失败,因为 phantomjs 窗口(您看不到)太小,而量角器(硒)只能“看到”页面上可见(无需滚动)的元素。所以当 phantomjs 启动一个相对较小的窗口时,一些你想要使用的内容和元素不适合可见部分。

在帖子https://github.com/angular/protractor/issues/585中描述了设置屏幕分辨率的解决方案。有了它,您可以为量角器启动的浏览器设置屏幕分辨率。我注意到 phantomjs 通常比 firefox 和 chrome 需要更多的空间。

此外,使用 protractor-html-screenshot-reporter,您可以在测试失败时截取屏幕截图,以便您自己查看元素是否可见。这对 phantomjs 特别有用,因为您无法通过调试停止量角器并查看问题所在。

于 2014-08-05T14:53:00.737 回答
0

我同意@Andre Paap。

我在 python 单元测试中遇到了同样的问题。

我通过添加以下行来解决。

self.driver.set_window_size(1120, 550)
于 2015-01-13T06:48:30.683 回答