Selenium webdriver 为什么可以';水豚能找到一种无头硒铬元素,但它能找到硒铬元素吗?

Selenium webdriver 为什么可以';水豚能找到一种无头硒铬元素,但它能找到硒铬元素吗?,selenium-webdriver,capybara,Selenium Webdriver,Capybara,我有一个非常简单的集成测试 visit root_path click_link 'Sign In' # <-- 但是失败了 Capybara::ElementNotFound: Unable to find visible link "Sign In" 使用时 Capybara.default_driver = :selenium_chrome_headless # headless fails 这就是我的想法 Capybara.default_max_wait

我有一个非常简单的集成测试

visit root_path
click_link 'Sign In' # <--
但是失败了

Capybara::ElementNotFound: Unable to find visible link "Sign In"
使用时

Capybara.default_driver = :selenium_chrome_headless # headless fails
这就是我的想法

Capybara.default_max_wait_time = 10
我也试过了

click_link 'Sign In', wait: 30

版本详细信息

在撰写本文时,我拥有和的最新版本:

默认的“无头”视口比“头”视口窄,因此您尝试单击的“登录”链接可能隐藏在“汉堡菜单图标”下面:

因此,首先单击汉堡:

visit root_path
find('#burger').click if Capybara.current_driver == :selenium_chrome_headless
click_link 'Sign In'
我在尝试单击“登录”链接之前捕获了一个屏幕截图:

visit root_path
save_and_open_screenshot
click_link 'Sign In'
另一种方法是,与检查当前驱动程序相比,您可以检查窗口宽度与汉堡出现的宽度:

find('#burger').click if page.current_window.size[0] < 900
find(“#burger”)。单击if page.current_window.size[0]<900
visit root_path
find('#burger').click if Capybara.current_driver == :selenium_chrome_headless
click_link 'Sign In'
visit root_path
save_and_open_screenshot
click_link 'Sign In'
find('#burger').click if page.current_window.size[0] < 900