click
Клик по элементу.
Эта команда выполняет WebDriver команду click
для выбранного элемента, которая обычно прокручивает к выбранному элементу, а затем кликает по нему, когда не передаются опции. Когда передается объект options, вместо клика webdriver используется класс действий, что дает дополнительные возможности, такие как передача типа кнопки, координат и т.д. По умолчанию, при использовании опций после выполнения действия клика отправляется команда отпускания (release), передайте 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"] ТОЛЬКО ДЛЯ ВЕБА (Десктоп/Мобильный) |
options.x опционально | number | Клик на X горизонтальных пикселей от местоположения элемента (от центральной точки элемента) WEB и Native (Десктоп/Мобильный) |
options.y опционально | number | Клик на Y вертикальных пикселей от местоположения элемента (от центральной точки элемента) WEB и Native поддержка (Десктоп/Мобильный) |
options.skipRelease опционально | boolean | Булево значение (опционально) ТОЛЬКО ДЛЯ ВЕБА (Десктоп/Мобильный) |
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 })
})