click
Обзор
Используйте команду click
, чтобы кликнуть по элементу.
Если у вас есть элементы с фиксированным положением (например, фиксированный header или footer), которые закрывают выбранный элемент после подскролла к нему, то клик будет произведен в заданных координатах, но будет получен вашим фиксированным (накладывающимся) элементом. В этих случаях выдается следующая ошибка:
Element is not clickable at point (x, x). Other element would receive the click: ...
Чтобы обойти это, попробуйте найти накладывающийся элемент и удалить его с помощью команды execute, чтобы он не мешал клику. Вы также можете попробовать проскроллить элемент самостоятельно, используя скролл со смещением, соответствующим вашему сценарию.
Использование
await browser.$(selector).click({ button, x, y, skipRelease });
Параметры команды
Имя | Тип | Описание |
button | String или Number | Кнопка, с помощью которой нужно выполнить клик. Может принимать значения 0, 1, 2 или "left", "middle", "right" соответственно. |
x | Number | Координата x, куда нужно кликнуть. |
y | Number | Координата y, куда нужно кликнуть. |
skipRelease | Boolean | Если значение true, то после клика не нужно отправлять releaseActions. |
Примеры использования
Пример 1
example-1.html
<button id="myButton" onclick="document.getElementById('someText').innerHTML='I was clicked'">Click me</button>
<div id="someText">I was not clicked</div>
click-1.js
it("should demonstrate the click command", async ({ browser }) => {
const myButton = await browser.$("#myButton");
await myButton.click();
const myText = await browser.$("#someText");
const text = await myText.getText();
assert.equal(text, "I was clicked"); // true
});
example-1.js
it("should fetch menu links and visit each page", async ({ browser }) => {
const links = await browser.$$("#menu a");
for (let link of links) {
await link.click();
}
});
Пример 2
example-2.html
<button id="myButton">Click me</button>
example-2.js
it("should demonstrate a click using an offset", async ({ browser }) => {
const myButton = await browser.$("#myButton");
// кликаем на расстоянии 30 горизонтальных пикселей
// от местоположения кнопки (от центра элемента)
await myButton.click({ x: 30 });
});
Пример 3
example-3.html
<button id="myButton">Click me</button>
example-3.js
it("should demonstrate a right click passed as string", async ({ browser }) => {
const myButton = await browser.$("#myButton");
// открываем контекстное меню в месте расположения кнопки
await myButton.click({ button: "right" });
});
it("should demonstrate a right click passed as number while adding an offset", async ({
browser,
}) => {
const myButton = await browser.$("#myButton");
// открываем контекстное меню на расстоянии 30 горизонтальных и 40 вертикальных пикселей
// от местоположения кнопки (от центра элемента)
await myButton.click({ button: 2, x: 30, y: 40 });
});
it("should skip sending releaseAction command that cause unexpected alert closure", async ({
browser,
}) => {
const myButton = await browser.$("#myButton");
// пропускаем отправку releaseActions
await myButton.click({ button: 2, x: 30, y: 40, skipRelease: true });
});