Тест Selenium Webdriverjs работает в Chrome, но не в Phantomjs

У меня очень простая форма: вы вводите имя и фамилию, нажимаете кнопку "Отправить", она отображает полное имя. Я написал простой тест для этой формы, используя Selenium Webdriverjs. Это работает с хромом, но не с фантомами. Я пропускаю какой-то трюк, чтобы заставить его работать с фантомами? Я использую Phantomjs версии 2.0.0.

Вот тестовый код:

var webdriver = require('selenium-webdriver');
var test = require('selenium-webdriver/testing');
var assert = require('assert');
var By = webdriver.By;

test.describe('Name Form', function() {
    var browser;

    test.beforeEach(function() {
        browser = new webdriver.Builder()
            .forBrowser('phantomjs')
            .build();
    });

    test.afterEach(function() {
        browser.quit();
    });

    test.it('should display the entered name when the Submit button is clicked', function() {

        // The simplified approach below of calling Webdriver methods works because of
        // the Promise Manager (see https://code.google.com/p/selenium/wiki/WebDriverJs#Control_Flows)
        browser.get('http://localhost:8080');

        // Enter firstName, lastName and click submit
        browser.findElement(By.id('firstName')).sendKeys('Naresh');
        browser.findElement(By.id('lastName')).sendKeys('Bhatia');
        browser.findElement(By.id('submitButton')).click();

        // Take a screen shot right after the click - it shows that display name has not appeared
        browser.takeScreenshot().then(function(image) {
            require('fs').writeFile('./screenshot-1.png', image, 'base64');
        });

        // Wait for displayName to be populated
        browser.wait(function() {
            return browser.findElement(By.id('displayName')).getText()
                .then(function(displayName) {
                    if (displayName.length > 0) {
                        assert.equal(displayName, 'Naresh Bhatia');
                        return true;
                    }
                    else {
                        return false;
                    }
                });
        }, 20000);
    });
});

Вот ошибка:

Name Form
  1) should display the entered name when the Submit button is clicked


0 passing (1s)
1 failing

1) Name Form should display the entered name when the Submit button is clicked:

    AssertionError: '' == 'Naresh Bhatia'
    + expected - actual

    +Naresh Bhatia

    at test/nameFormTest.js:49:24
    at Array.forEach (native)
From: Task: Name Form should display the entered name when the Submit button is clicked
    at Array.forEach (native)

РЕДАКТИРОВАТЬ

Обратите внимание, что при отправке формы страница не изменяется. Существует функция JavaScript, которая изменяет элемент diplayName:

$(document).ready(function() {

    $('#submitButton').click(function(e) {
        e.preventDefault();
        $('#displayName').text($('#firstName').val() + ' ' + $('#lastName').val());
    });
});

0 ответов

Другие вопросы по тегам