Как щелкнуть элемент с нулевой высотой с помощью Capybara?

avatar
Phil
1 июля 2021 в 21:18
117
2
0

Я получаю сообщение об ошибке: element not interactable: element has zero size

У меня есть элемент с тегом кнопки с текстом. Однако element.style имеет два атрибута: 0px height0px padding, если это имеет значение).

Единственный обходной путь, который я нашел, — это взаимодействие с каким-либо другим элементом, который я могу найти (выше в иерархии разметки), а затем использовать смещения x и y для нажатия этой кнопки. Однако это приводит к нестабильности, поскольку размер элемента может измениться, а кнопка находится в правом нижнем углу.

Я готов сделать все возможное и вычислить правильные координаты, но я также не могу понять, как получить ширину элемента. Я также готов просто использовать javascript, чтобы щелкнуть в крайнем случае. В идеале я хотел бы знать, есть ли что-то более чистое и элегантное для этой проблемы.

Спасибо!

Источник
Thomas Walpole
2 июля 2021 в 01:26
0

Если элемент имеет нулевой размер, пользователь также не сможет на него щелкнуть. На какой элемент на самом деле нажимает пользователь? Это случай, когда пользовательский интерфейс просто рушится из-за слишком маленького размера окна?

Phil
2 июля 2021 в 13:17
0

@ThomasWalpole Я не знаю, как и почему он может создавать кликабельный элемент. Здесь я поделился альбомом с подробностями: imgur.com/a/qCBPn84 Я включил его внешний вид, разметку вокруг этого элемента и некоторые свойства тега кнопки.

Thomas Walpole
2 июля 2021 в 23:57
0

Меняется ли стиль кнопки при наведении? Это доступно на общедоступном сайте, который я могу проверить? Вы пробовали просто щелкнуть любой из элементов упаковки?

Phil
5 июля 2021 в 20:50
0

Стиль не меняется при наведении. Публично это недоступно (но я посмотрю, смогу ли я как-то это раскачать). Я могу щелкнуть один из элементов упаковки и указать смещение x: и y:, чтобы добиться успеха при нажатии на кнопку.

Phil
14 июля 2021 в 20:35
0

@ThomasWalpole В итоге я использовал actionbuilder в драгоценном камне selenium-webdriver, который позволял мне нажимать кнопку, даже если ее высота равна 0. Я не уверен, почему это работает по сравнению с искателем капибары.

Ответы (2)

avatar
Phil
14 июля 2021 в 20:23
0

Я решил использовать actionbuilder, чтобы обойти эту проблему, например:

el = find('button', :text => '+ 1').native
actionbuilder = page.driver.browser.action # Use actionbuilder to workaround zero height button
actionbuilder.click(el).perform

Я не уверен, что это правильный путь, но, похоже, это помогло и, возможно, поможет кому-то еще.

avatar
s.stv
2 июля 2021 в 08:09
0

Я думаю, вы можете включить js для этого теста и использовать для этого трюк.

Что-то вроде этого:

page.execute_script("$('#container img').css('height', '10px;')")
find('#container img').click
page.execute_script("$('#container img').css('height', '0')")