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
ey
Internamente, utiliza:
- Toque no elemento:
- o comando
click
para ambientes Web (navegadores Chrome/Safari ou aplicativos híbridos) - o Android
mobile: clickGesture
ou iOSmobile: tap
para aplicativos nativos, incluindo o comandoscrollIntoView
para rolagem automática
- o comando
- Toque na tela:
- o comando
action
para ambientes Web (navegadores Chrome/Safari ou aplicativos híbridos) - o Android
mobile: clickGesture
ou iOSmobile: tap
para aplicativos nativos
- o comando
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
.
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.
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
Name | Type | Details |
---|---|---|
options optional | TapOptions | Opções de toque (opcional) |
Opções de toque no elemento | ||
options.x optional | number | Número (opcional, obrigatório se y estiver definido) Apenas para toque na TELA, não para toque no ELEMENTO |
options.y optional | number | Nú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 | string | Pode 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 | number | O 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 | Element | Elemento 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
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()
})
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')
})
})
it('should be able to tap on screen coordinates', async () => {
await browser.tap({ x: 200, y: 400 })
})