Ошибка ссылки: $ не определено (WebdriverIO)
Я запускаю нативные приложения с помощью WebdriverIO и mocha, но не могу связаться с устройством, но могу запустить приложение, но не взаимодействую с элементом.
android_app_test.js
const webdriverio = require('webdriverio');
const androidOptions = require('../../../helpers/caps').androidOptions;
const assert = require('chai').assert;
androidOptions.capabilities.appPackage = "com.google.android.calculator"
androidOptions.capabilities.appActivity = "com.android.calculator2.Calculator"
describe('Create Chrome web session', function () {
let client;
before(async function () {
client = await webdriverio.remote(androidOptions)
});
after(async function () {
await client.deleteSession();
});
it('should create and destroy Android browser session', async function () {
const elem = await $('#digit_2')
elem.waitForDisplayed(3000);
await client.touchClick('digit_2');
});
});
config.js
var Mocha = require('mocha'), fs = require('fs');
var mocha = new Mocha({
reporter: 'mochawesome-screenshots',
reporterOptions: {
reportDir: 'customReportDir',
reportName: 'customReportName',
reportTitle: 'customReportTitle',
reportPageTitle: 'customReportPageTitle',
takePassedScreenshot: true,
clearOldScreenshots: true,
shortScrFileNames: true,
jsonReport: false,
multiReport: false
},
timeout: 600000,
})
var file = ['./test/basic/app/']; //location of the test js
for (var i = 0; i < file.length; i++) {
fs.readdirSync(file[i]).forEach(function (filename) {
mocha.addFile(file[i] + filename);
});
}
mocha.run(function (failures) {
process.on('exit', function () {
process.exit(failures);
});
});
package.json
"scripts": {
"test": "mocha config.js"
},
Не уверен в этом, я думаю, что-то не так в моей конфигурации или
3 ответа
$
глобальный добавляется через тестер WebdriverIO. Поскольку вы используете wdio в автономном режиме, вы не получите доступ к этим глобальным переменным. Попробуйте это вместо этого:
const elem = await client.$('#digit_2')
Убедитесь, что вы используете новейшую версию Webdriver.io. Webdriver.io v5 является последней версией, которая также реализует $('selector')
ярлык.
Если вы используете Webdriver.io v4 - возможно, вам все равно придется использовать browser.element('selector')
чтобы найти ваши элементы.
Это видно из тегов в вашем вопросе и кода, который вы разместили у вас, возможно, в версии 4.
$
обычно используется как сокращение для запуска функций JQuery (таких как ваш $('#digit_2')
в файле "android_app_test.js").
Из документа WebdriverIO:
The $ command is a short way to call the findElement command in order to fetch a single element on the page. It returns an object that with an extended prototype to call action commands without passing in a selector. However if you still pass in a selector it will look for that element first and call the action on that element.
Чтобы это исправить, вы должны установить JQuery с помощью следующих команд:
В терминале запустить:
npm install --save jquery
npm install --save-dev @types/jquery
затем импортируйте его вверху файла "android_app_test.js", как это
import * as $ from "jquery";