Pular para o conteúdo principal

tap

Executa um gesto de toque em:

  • ou no elemento fornecido. Irá automaticamente rolar se não puder ser encontrado.
  • ou na tela de um dispositivo móvel fornecendo coordenadas x e y

Internamente, utiliza:

  • Toque no elemento:
    • o comando click para ambientes Web (navegadores Chrome/Safari ou aplicativos híbridos)
    • o Android mobile: clickGesture ou iOS mobile: tap para aplicativos nativos, incluindo o comando scrollIntoView para rolagem automática
  • Toque na tela:
    • o comando action para ambientes Web (navegadores Chrome/Safari ou aplicativos híbridos)
    • o Android mobile: clickGesture ou iOS mobile: tap para aplicativos nativos

Essa diferença torna o comando tap uma alternativa mais confiável ao comando click para aplicativos móveis.

Para aplicativos nativos, este comando difere do comando click, pois irá automaticamente deslizar até o elemento usando o comando scrollIntoView, que não é suportado para aplicativos nativos com o comando click. Em aplicativos híbridos ou ambientes web, a rolagem automática é suportada para ambos os comandos click e tap.

informação

Este comando só funciona com os seguintes componentes atualizados:

  • Servidor Appium (versão 2.0.0 ou superior)
  • appium-uiautomator2-driver (para Android)
  • appium-xcuitest-driver (para iOS)

Certifique-se de que seu ambiente Appium local ou baseado em nuvem seja atualizado regularmente para evitar problemas de compatibilidade.

Para toques na tela

Se você deseja tocar em uma coordenada específica na tela e usa uma captura de tela para determinar as coordenadas, lembre-se de que as coordenadas para iOS são baseadas no tamanho da tela do dispositivo, e não no tamanho da captura de tela. O tamanho da captura de tela é maior devido à taxa de pixels do dispositivo. A taxa média de pixels do dispositivo até o iPhone 8 e os iPads atuais é 2, para iPhones a partir do iPhone X a taxa é 3. Isso significa que o tamanho da captura de tela é 2 ou 3 vezes maior que o tamanho da tela do dispositivo, o que significa que se você encontrar as coordenadas na captura de tela, divida-as pela taxa de pixels do dispositivo para obter as coordenadas corretas da tela. Por exemplo:

const screenshotCoordinates = { x: 600, y: 900 };
const dpr = 3; // Exemplo para iPhone 16
const screenCoordinates = {
x: screenshotCoordinates.x / dpr,
y: screenshotCoordinates.y / dpr
};
await browser.tap(screenCoordinates);
Parameters
NameTypeDetails
options
optional
TapOptionsOpções de toque (opcional)
Opções de toque no elemento
options.x
optional
numberNúmero (opcional, obrigatório se y estiver definido)
Apenas para toque na TELA, não para toque no ELEMENTO
options.y
optional
numberNúmero (opcional, obrigatório se x estiver definido)
Apenas para toque na TELA, não para toque no ELEMENTO
Opções de toque na tela
options.direction
optional
stringPode ser um de down, up, left ou right, o padrão é down.
Apenas para toque no ELEMENTO, não para toque na TELA
APENAS-APLICATIVO-NATIVO-MÓVEL
options.maxScrolls
optional
numberO número máximo de rolagens até parar de procurar pelo elemento, o padrão é 10.
Apenas para toque no ELEMENTO, não para toque na TELA
APENAS-APLICATIVO-NATIVO-MÓVEL
options.scrollableElement
optional
ElementElemento que é usado para rolar dentro. Se nenhum elemento for fornecido, usará o seguinte seletor para iOS -ios predicate string:type == "XCUIElementTypeApplication" e o seguinte para Android //android.widget.ScrollView'. Se mais elementos corresponderem ao seletor padrão, então por padrão ele escolherá o primeiro elemento correspondente.
Apenas para toque no ELEMENTO, não para toque na TELA
APENAS-APLICATIVO-NATIVO-MÓVEL
Examples
element.tap.example.js
it('should be able to tap an on element', async () => {
const elem = $('~myElement')
// It will automatically scroll to the element if it's not already in the viewport
await elem.tap()
})

element.tap.scroll.options.example.js
it('should be able to swipe right 3 times in a custom scroll areas to an element and tap on the element', async () => {
const elem = $('~myElement')
// Swipe right 3 times in the custom scrollable element to find the element
await elem.tap({
direction: 'right',
maxScrolls: 3,
scrollableElement: $('#scrollable')
})
})

screen.tap.example.js
it('should be able to tap on screen coordinates', async () => {
await browser.tap({ x: 200, y: 400 })
})

Welcome! How can I help?

WebdriverIO AI Copilot