Я пытаюсь после запуска моего приложения выполнить действие касания / нажатия на элемент кнопки с помощью селектора XPath. Это гибридное приложение (нативное + некоторые веб-просмотры).
У меня возникли проблемы, поскольку документы по Appium, похоже, вводят в заблуждение (потенциально).
getDriver ():
const driver = await remote({
capabilities: {
platformName: 'IOS',
browserName: 'mobileOS',
deviceName: config.deviceName,
securityToken: config.securityToken,
app: 'PUBLIC:my-app.ipa'
},
hostname: config.hostname,
path: config.path,
port: config.port,
logLevel: config.logLevel
});
Вот как я могу загрузить драйвери работает. Это запустит устройство и откроет приложение, которое я устанавливаю.
Я пытаюсь выполнить касание или нажать или щелкнуть действие:
const el = driver.$('//*[@name="MyButton"]');
driver.touchPerform([
{ action: 'press', options: { element: el } },
{ action: 'release'}
]);
Я получаю ошибку: Запрос не выполнен из-за java.util.LinkedHashMap не может быть приведен к java.lang.String
или
const el = driver.$('//*[@name="MyButton"]');
driver.touchPerform(
{ action: 'tap', options: { element: el } }
);
Полученная ошибка: Ошибка при получении WebDriver: искаженный тип для параметра "действий" команды touchPerform Ожидается: объект [] Факт: объект
Первоначально я следую этому документу: http://appium.io/docs/en/commands/interactions/touch/tap/ и / или http://appium.io/docs/en/commands/interactions/touch/touch-perform/
Теперь я могу понять, почему touchPerform (нажатие) можетне работает из-за его указания на других документах, что он может использовать только x, y потенциально.
Но кран - это то, что сбивает меня с толку. Если я обертываю объект, который отправляю в файле driver.touchPerform в массиве, например:
const el = driver.$('//*[@name="MyButton"]');
driver.touchPerform([
{ action: 'tap', options: { element: el } }
]);
Я получаю ту же ошибку, что и предыдущая: Запрос не выполнен из-за java.util.LinkedHashMap не может быть приведенto java.lang.String
Мой вопрос: Использую ли я неправильный выбор или событие касания для нажатия кнопки на мобильном устройстве?
Я также попробовал метод http://appium.io/docs/en/commands/element/actions/click/, и когда я пытаюсь, он говорит мне driver.$(..).click() is not a function
Любая помощь очень ценится.