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 では失敗します。ここに何か不足していますか、それともフロントエンドの .NET コードに対して実行されないという phantomjs の制限です。

4

2 に答える 2

0

@Andre Paapに同意します。

Python単体テストでファントムで同じ問題が発生しました。

次の行を追加して解決しました。

self.driver.set_window_size(1120, 550)
于 2015-01-13T06:48:30.683 に答える
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 に答える