2016-04-05 5 views
0

, поэтому я просто пытался интегрировать свой угловой проект с транспортиром, и у меня возникла проблема. У меня есть разметки HTML, как это:Транспортир дает неправильную ошибку выбора

<tr ng-repeat="(key, myLstItem) in shadowMyLst" class="show-on-hover-subject" ng-click="editSurvey(myLstItem.id, myLstItem.name, 1)" id="questionnaire-{{key}}"> 
    ... 
</tr> 

и мой транспортир разметки, как это:

beforeEach(function() { 
    browser.driver.get(CI_URL); 

    browser.driver.findElement(by.name('ci-email-login')).sendKeys(CI_EMAIL); 
    browser.driver.findElement(by.name('ci-username-login')).sendKeys(CI_USERNAME); 
    browser.driver.findElement(by.name('ci-go-login')).click(); 

    browser.driver.sleep(1); 
    browser.waitForAngular(); 


    browser.driver.findElement(by.id('questionnaire-0')).click(); 
}); 

, когда я бегу, я получаю эту ошибку:

Failed: no such element: Unable to locate element: {"method":"css selector","selector":"*[id="questionnaire-0"]"} 

Я используя by.id в качестве селектора, и он говорит, что im использует селектор css. Я здесь что-то не так? Благодарю.

+0

Вы проверили html-документ, если id = "questionnaire-0" отображается правильно? – sdfacre

+0

Да. Я также добавил 'browser.waitForAngular();' просто чтобы убедиться, что ng-repeat был закончен, прежде чем найти элемент. Он был там в порядке, проблема в том, что он не может найти элемент, потому что по какой-то причине Protractor говорит, что я использую селектор css, в то время как в моем коде я использую 'by.id'. – Growlithe

+0

Похоже, что webdriver преобразовал ваш локатор by.id в селектор css. Является ли процесс входа в систему, когда вы вводите учетные данные, является угловой страницей? .. Если это не ждет, то может потребоваться, чтобы не удалось. – Jesse

ответ

1

Выяснил это. Я дважды повторял объект на странице и добавлял только идентификаторы к одному ng-repeat. Транспортир не обнаружил, что добавил идентификаторы к обоим, теперь он работает нормально. Спасибо за помощь.

Смежные вопросы