клік
Клік на елементі.
Це видає команду WebDriver click
для вибраного елемента, яка зазвичай прокручує до вибраного елемента і клікає на нього, коли не передаються опції. Коли передається об'єкт опцій, використовується клас дій замість кліку webdriver, що надає додаткові можливості, такі як передача типу кнопки, координат тощо. За замовчуванням при використанні опцій команда відпускання надсилається після виконання дії кліку, передайте option.skipRelease=true
, щоб пропустити цю дію.
Якщо у вас є елементи з фіксованим положенням (наприклад, фіксований заголовок або нижній колонтитул), які закривають вибраний елемент після його прокрутки всередині області перегляду, клік буде виконано за заданими координатами, але його отримає ваш фіксований (перекриваючий) елемент. У таких випадках виникає наступна помилка:
Element is not clickable at point (x, x). Other element would receive the click: ..."
Щоб обійти це, спробуйте знайти перекриваючий елемент і видалити його за допомогою команди execute
, щоб він не заважав кліку. Ви також можете спробувати прокрутити до елемента самостійно, використовуючи scroll
з відступом, відповідним для вашого сценарію.
Команда кліку також може бути використана для імітації довгого натискання на мобільному пристрої. Це робиться шляхом встановлення duration
.
Дивіться приклад нижче для отримання додаткової інформації.
Використання
$(selector).click({ button, x, y, skipRelease, duration })
Параметри
Ім'я | Тип | Деталі |
---|---|---|
options необов'язково | ClickOptions | Опції кліку (необов'язково) |
options.button необов'язково | string, number | Може бути одним з [0, "left", 1, "middle", 2, "right"] ТІЛЬКИ-ДЛЯ-WEB (Десктоп/Мобільний) |
options.x необов'язково | number | Клікає X пікселів по горизонталі від місцезнаходження елемента (від центральної точки елемента) WEB та Native (Десктоп/Мобільний) |
options.y необов'язково | number | Клікає Y пікселів по вертикалі від місцезнаходження елемента (від центральної точки елемента) Підтримка WEB та Native (Десктоп/Мобільний) |
options.skipRelease необов'язково | boolean | Булеве значення (необов'язково) ТІЛЬКИ-ДЛЯ-WEB (Десктоп/Мобільний) |
options.duration необов'язково | number | Тривалість кліку, також в ідомий як "LongPress" ТІЛЬКИ-ДЛЯ-МОБІЛЬНИХ-НАТИВНИХ-ДОДАТКІВ (Мобільний) |
Приклади
<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 })
})