Find 方法返回的 Capybara 元素采用了错误的坐标

问题描述 投票:0回答:1

我使用 Ruby On Rails 和 Minitest 运行系统测试,但显示错误。

错误: RequestsTest#test_Admin_User_should_create_request: 硒::WebDriver::错误::ElementClickInterceptedError: 元素点击被拦截:元素输入标签框#itemsClick">...在点 (686, 23) 处不可点击。 其他元素将收到点击:... (会话信息:chrome=120.0.6099.130) 测试/系统/requests_test.rb:480:在execute_test_new_request' 测试/系统/requests_test.rb:54:在类中的块:RequestsTest'

HTML:

<a id="request__tags-list" href="#" class="input-tag-items" data-action="click->input-tag-box#itemsClick"></a>

我的测试:

tags_list = find("#request__tags-list")
puts tags_list.rect
tags_list.click  # click on link

我尝试使用click_link方法,但它也不起作用。显示相同的错误。

我注意到“tags_list.rect”打印的坐标与tags_list坐标不对应。

#<struct Selenium::WebDriver::Rectangle x=316.6037902832031, y=31.733491897583008, width=739, height=20>

实际上,Y 坐标在页面下方更远,大约为 480。

知道发生了什么。

谢谢!

所以:Windows 11

Ruby 版本: ruby 3.2.2(2023-03-30 修订版 e51014f9c0)[x64-mingw-ucrt]

Rails 版本:Rails 7.0.8

更新:

截图:

ruby-on-rails capybara
1个回答
0
投票

问题是我购买笔记本电脑时将屏幕分辨率配置为125%。由于某种原因,Chrome 计算出错误的元素坐标。使用 Firefox 不会发生这种情况。

现在坐标显示正确:

#<struct Selenium::WebDriver::Rectangle x=315.7134704589844, y=347.7594451904297, width=738, height=20>

Beartech,感谢您的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.