kliknij
Kliknij na element.
Ta komenda wydaje polecenie WebDriver click
dla wybranego elementu, które zazwyczaj przewija do elementu, a następnie klika
wybrany element, gdy nie przekazano żadnych opcji. Gdy przekazywany jest obiekt opcji, używa klasy akcji zamiast kliknięcia webdriver, co
daje dodatkowe możliwości, takie jak przekazywanie typu przycisku, współrzędnych itp. Domyślnie, przy użyciu opcji, polecenie zwolnienia akcji
jest wysyłane po wykonaniu akcji kliknięcia, przekaż option.skipRelease=true
, aby pominąć tę akcję.
Jeśli masz elementy o stałej pozycji (takie jak stały nagłówek lub stopka), które zasłaniają wybrany element po przewinięciu w obszarze widocznym, kliknięcie zostanie wykonane na podanych współrzędnych, ale będzie odebrane przez Twój stały (nakładający się) element. W takich przypadkach wyrzucany jest następujący błąd:
Element is not clickable at point (x, x). Other element would receive the click: ..."
Aby to obejść, spróbuj znaleźć nakładający się element i usunąć go za pomocą komendy execute
, aby nie zakłócał
kliknięcia. Możesz też spróbować samodzielnie przewinąć do elementu za pomocą scroll
z odpowiednim przesunięciem dla Twojego
scenariusza.
Komenda click może być również używana do symulowania długiego naciśnięcia na urządzeniu mobilnym. Odbywa się to przez ustawienie duration
.
Zobacz przykład poniżej, aby uzyskać więcej informacji.
Użycie
$(selector).click({ button, x, y, skipRelease, duration })
Parametry
Nazwa | Typ | Szczegóły |
---|---|---|
options opcjonalny | ClickOptions | Opcje kliknięcia (opcjonalne) |
options.button opcjonalny | string, number | Może być jednym z [0, "left", 1, "middle", 2, "right"] TYLKO-WEB (Desktop/Mobile) |
options.x opcjonalny | number | Klika X pikseli poziomo od lokalizacji elementu (od środkowego punktu elementu) WEB i Natywne (Desktop/Mobile) |
options.y opcjonalny | number | Klika Y pikseli pionowo od lokalizacji elementu (od środkowego punktu elementu) Obsługa WEB i Natywne (Desktop/Mobile) |
options.skipRelease opcjonalny | boolean | Boolean (opcjonalne) TYLKO-WEB (Desktop/Mobile) |
options.duration opcjonalny | number | Czas trwania kliknięcia, tzw. "LongPress" TYLKO-MOBILNE-NATYWNE-APLIKACJE (Mobile) |
Przykłady
<button id="myButton" onclick="document.getElementById('someText').innerHTML='I was clicked'">Click me</button>
<div id="someText">I was not clicked</div>
it('should demonstrate the click command', async () => {
const myButton = await $('#myButton')
await myButton.click()
const myText = await $('#someText')
const text = await myText.getText()
assert(text === 'I was clicked') // true
})
it('should fetch menu links and visit each page', async () => {
const links = await $$('#menu a')
await links.forEach(async (link) => {
await link.click()
})
})
<button id="myButton">Click me</button>
it('should demonstrate a click using an offset', async () => {
const myButton = await $('#myButton')
await myButton.click({ x: 30 }) // clicks 30 horizontal pixels away from location of the button (from center point of element)
})
<button id="myButton">Click me</button>
it('should demonstrate a right click passed as string', async () => {
const myButton = await $('#myButton')
await myButton.click({ button: 'right' }) // opens the contextmenu at the location of the button
})
it('should demonstrate a right click passed as number while adding an offset', async () => {
const myButton = await $('#myButton')
await myButton.click({ button: 2, x: 30, y: 40 }) // opens the contextmenu 30 horizontal and 40 vertical pixels away from location of the button (from the center of element)
})
it('should skip sending releaseAction command that cause unexpected alert closure', async () => {
const myButton = await $('#myButton')
await myButton.click({ button: 2, x: 30, y: 40, skipRelease:true }) // skips sending releaseActions
})
it('should be able to open the contacts menu on iOS by executing a longPress', async () => {
const contacts = await $('~Contacts')
// opens the Contacts menu on iOS where you can quickly create
// a new contact, edit your home screen, or remove the app
await contacts.click({ duration: 2000 })
})