如何用水豚点击零高度的元素?

How to click element with zero height with Capybara?

我得到的错误是:element not interactable: element has zero size

我有一个带有文本按钮标签的元素。但是,element.style 有两个属性 0px height(和 0px padding,如果重要的话)。

我发现的唯一解决方法是与我能找到的其他一些元素(在标记的层次结构中更高)进行交互,然后使用 xy 偏移量来单击此按钮。然而,这最终变得不稳定,因为元素的大小可以改变,并且按钮位于右下角。

我愿意多走一步,计算出正确的坐标,但我也不知道如何获得元素的宽度。我也愿意只使用一些 javascript 作为最后的手段来点击。理想情况下,我很想知道这个问题是否有更简洁优雅的方法。

谢谢!

我认为你可以为这个测试启用 js 并使用一个技巧。

像这样:

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

我最终使用 actionbuilder 来解决这个问题,如下所示:

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

我不确定这是不是要走的路,但这似乎有所帮助,也许可能会帮助其他人。