У меня возникли проблемы с написанием клиентских тестов с использованием последней версии (0.4.0) этой библиотеки Node.js: https://github.com/admc/wd. Я использую Sencha Touch 2.4.Как идентифицировать элементы пользовательского интерфейса от приложения Sencha Touch для тестирования с помощью Appium?
Я могу получить веб-селен selenium, подключенный к серверу Appium app (v 1.4.13), который, в свою очередь, загружает мое приложение Sencha Touch должным образом в моем указанном симуляторе iPhone. Я могу проверить элементы с помощью Appium Inspector.
Однако при написании тестов я не могу идентифицировать какие-либо элементы пользовательского интерфейса при первом просмотре приложения. В Sencha Architect я установил компонент кнопки id
на primary-login-container-new-account-button
.
Например, для каждого из приведенных ниже случаев, кажется, элемент не был найден. Я боюсь, что динамическое поколение элементов Sencha является причиной того, что я не могу найти элементы. Тем не менее, я читал, что Selenium - это вариант для тестирования приложений Sencha для пользовательского интерфейса, поэтому это должно быть легко возможным? Мой проект также завернут в Кордову.
1.
[...]
it("should be able to click on Create New Account button1", function() {
return driver
.elementById('primary-login-container-new-account-button')
.text().should.become('Create New Account');
});
// Error: [elementById("primary-login-container-new-account-button")] Error response status: 7, , NoSuchElement - An element could not be located on the page using the given search parameters. Selenium error: An element could not be located on the page using the given search parameters.
2.
it("should be able to click on Create New Account button2", function() {
return driver
.elementByAccessibilityId('primary-login-container-new-account-button')
.text().should.become('Create New Account');
});
// Error: [elementByAccessibilityId("primary-login-container-new-account-button")] Error response status: 7, , NoSuchElement - An element could not be located on the page using the given search parameters. Selenium error: An element could not be located on the page using the given search parameters.
3.
it("should be able to click on Create New Account button3", function() {
return driver
.elementByIdOrNull('primary-login-container-new-account-button', function(err, element) {
});
});
// returns element and err as null
4.
it("should be able to click on Create New Account button4", function() {
return driver
.elementByCssSelector('#primary-login-container-new-account-button')
.text().should.become('Create New Account');
});
// Error: [elementByCssSelector("#primary-login-container-new-account-button")] Error response status: 9, , UnknownCommand - The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource. Selenium error: Invalid locator strategy: css selector
5.
it("should be able to click on Create New Account button5", function() {
return driver
.elementByName('createUserAccountButton')
.text().should.become('Create New Account');
});
// Error: [elementByName("createUserAccountButton")] Error response status: 7, , NoSuchElement - An element could not be located on the page using the given search parameters. Selenium error: An element could not be located on the page using the given search parameters.
6.
it("should be able to click on Create New Account button6", function() {
return driver
.waitForElementById('#primary-login-container-new-account-button', 30000)
.text().should.become('Create New Account');
});
// Error: [waitForElementById("#primary-login-container-new-account-button",30000)] Element condition wasn't satisfied!
[...]
Имеет ли значение использование Chrome или Safari для проверки элементов? В Safari для iOS-устройств гораздо проще сделать это. – writofmandamus
Я вижу идентификатор, присутствующий в родительском div от инспектора Safari. Я также попробовал выполнить done() из Mocha после инициализации драйвера, чтобы убедиться, что тесты выполняются после блока before. Я вижу, что мое приложение отображается в симуляторе, когда выполняется первая строка первого теста. Я также попытался выполнить поиск через elementByClassName (например, класс normal-none), где мне не удалось получить какие-либо элементы.Однако, когда я искал с помощью UIAnormal-none, я не получил ответ об ошибке, но в итоге это был пустой массив. Мои скриншоты находятся здесь: http://imgur.com/a/PwfER – writofmandamus
В вашем скриншоте нет элемента с 'primary-login-container-new-account-button'. Возможно, обертывание его в Кордове - это то, что меняет это. Чтобы попробовать удачу, вы можете получить доступ к элементу с помощью XPath на том же самом представлении, чтобы узнать, можете ли вы вообще получить к ним доступ или нет. На стороне примечания: я считаю, что вы должны переключать контекст в Webview для доступа к элементам здесь. – nullpointer