Локатор транспортира не может найти элемент html только в phantomjs

У меня есть несколько тестов, которые отлично работают в chrome, но если я переключусь на phantomjs, у меня будет следующая ошибка:

Unable to find element with css selector '.selected-recipients a'

Мой тест просто так:

it('should navigate when clicking edit', function() {

    var editLink = element(by.css('.selected-recipients a')).element(by.css('.edit-preview'));

    editLink.click();
    expect(browser.getCurrentUrl()).toContain('#/recipients');
});

Это отлично работает на хроме. Проблема в фантомах. Я нашел сообщение, в котором говорится, что проблема может быть связана с размером окна, но это не решило проблему для меня:

https://github.com/angular/protractor/issues/585

Я также пытался использовать by.id вместо by.css, и у меня такая же проблема. Все остальные тесты в этом файле работают нормально, а некоторые используют by.css, так что это не похоже на проблему с пониманием этого локатора phantomjs. Кажется, что элемента вообще нет на странице.

Любые идеи? Спасибо


person redwulf    schedule 24.04.2014    source источник


Ответы (1)


Когда phantomjs ведет себя странно, я делаю снимок экрана. Вероятно, это не то, что вы ищете, но это идея. :)

page.open("http://www.stackoverflow.com", function()
{
    page.render('script_ending.png');
}

Другая идея состоит в том, чтобы попытаться сбросить html в файл, чтобы увидеть, есть ли там элемент.

Или попробуйте изменить DOM, вставив элемент, а затем посмотрите, сможете ли вы его найти.

Или попробуйте выполнить поиск только по имени класса, чтобы увидеть, в какой момент он терпит неудачу... может быть, нет дочернего элемента тега a.

person tom.g.c    schedule 11.05.2015
comment
Откуда page? Я думаю, что browser.takeScreenshot - это правильный способ делать скриншоты в транспортире. Вы должны поместить пример кода для вывода html в файл. - person Michael; 23.02.2017