Capybara是Rack应用程序的Web应用程序测试框架,例如Rails,Sinatra和Merb。
在 selenium webdriver 中将 chrome 'devtools.open_docked' 设置为 false
我希望在将 selenium 与水豚一起使用时,chrome 开发工具能够与窗口分离地打开。 当前 devtools 连接到右侧(默认)。 我正在使用以下代码: 卡皮布...
BraintreeError:此时无法联系网关(仅在系统/集成规范期间)
最初来自https://github.com/braintree/braintree-web/issues/296 一般信息 将 Braintree-web gem 与 Spree 商店结合使用 SDK版本:3.2.0 环境:使用rspec的测试环境 乙...
Ruby VCR 测试未捕获来自 sinatra 的 http 调用
我有一个 Sinatra 应用程序,其中包含以下调用; 得到 '/test' 做 @res = Net::HTTP.get_response(URI('http://www.iana.org/domains/reserved')) erb:测试 结尾 有风景; <%= @res.
在 Rails 应用程序中使用 Selenium WebDriver 和 Capybara 时出错
我正在使用 Rails 6.1 和 ruby 2.6.5,并且正在为 Active Admin 新页面创建测试,我发现测试这个新页面的最佳方法是使用 gems Capybara、Webdrivers 和 Selenium-Webdrive ...
每个 capybara/selenium 4 测试的格式错误的请求
从 selenium 3 升级到 4 后,每个功能测试都会触发两个无效请求,puma 会记录以下错误: 2024-02-06 09:38:36 -03 HTTP 解析错误,格式错误的请求:# 从 selenium 3 升级到 4 后,每个功能测试都会触发两个无效请求,并且 puma 会记录以下错误: 2024-02-06 09:38:36 -03 HTTP parse error, malformed request: #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Are you trying to open an SSL connection to a non-SSL Puma?> 这就是 chromedriver 的配置方式: Capybara.register_driver :chrome do |app| options = Selenium::WebDriver::Chrome::Options.new( args: [ 'headless=new', 'no-sandbox', '--window-size=2560,1440', '--disable-web-security', '--allow-running-insecure-content', "--enable-logging", # Enables logging "--log-level=0", # Enables all logging "--v=1" # Sets the verbosity level of logging ] ) options.add_option('goog:loggingPrefs', { browser: 'ALL' }) Capybara::Selenium::Driver.new(app, browser: :chrome, options: options) end 我无法识别这些请求是什么? 关于如何摆脱它们或如何调试这些请求有什么想法吗? -- 2024 年 9 月更新 仍然没有弄清楚这一点,并且在将 chromedriver 从 127 升级到 128 后开始出现相同的错误。 此外,每个第一个功能测试都会失败,并显示一条消息 This site can't be reached。 更新 将服务器从 puma 更改为 webrick 将消除警告,但第一个功能测试仍然失败,并出现 This site can't be reached 错误 了解 HTTP 解析错误 错误信息 HTTP 格式无效,解析失败。您是否正在尝试打开与非 SSL Puma 的 SSL 连接?表明正在使用的 HTTP 和 HTTPS 协议之间存在不匹配。如果在需要 HTTP 时尝试使用 HTTPS 连接到 Puma 服务器,则经常会发生这种情况,反之亦然。 调试步骤 检查服务器配置: 如果您通过 HTTP 访问 Puma 服务器,请确保不会无意中配置 SSL/TLS。验证您在测试设置中使用的协议是否正确。 水豚配置: 仔细检查您如何设置应用程序服务器以及您在测试中使用的 URL。确保您始终使用 HTTP 或 HTTPS。 检查网络流量: 使用网络监控工具检查测试期间发出的请求。浏览器开发工具可以帮助您查看加载测试环境时正在触发哪些请求。 记录: 增加 Puma 服务器和 Chrome 选项中的日志记录详细程度: 在 Puma 方面,调整 Puma 配置中的日志记录级别 文件或启动命令。 对于 Chrome 日志记录,您已经设置了高详细程度,但是 确保您查看指定目录中生成的日志。 潜在的修复 禁用 SSL 验证: 如果您正在针对非 SSL 端点进行测试,但具有 SSL 配置,则可能需要在请求中禁用 SSL 验证: options.add_argument('--ignore-certificate-errors') options.add_argument('--allow-insecure-localhost') 使用Webrick: 由于切换到 Webrick 目前可以消除该错误,因此在使用 Puma 进一步调查时可以考虑暂时使用它。这不是一个长期的解决方案,但它可以帮助隔离问题。 更新 Gem 依赖项: 确保您的所有 Ruby gem 均已更新,尤其是与 Capybara、Selenium 和 Puma 相关的那些。有时不兼容可能会导致问题。 检查您的测试环境: 如果第一次测试失败并显示“无法访问此站点”,请确保在运行测试之前正确启动应用程序服务器。增加依赖于服务器响应的测试的等待时间也可能是值得的。 降级 ChromeDriver: 如果问题是在 ChromeDriver 升级后出现的,请考虑在调试问题时暂时将 ChromeDriver 降级回版本 127。 水豚配置示例 以下是重组水豚配置的方法: Capybara.register_driver :chrome do |app| options = Selenium::WebDriver::Chrome::Options.new options.add_argument('--headless=new') options.add_argument('--no-sandbox') options.add_argument('--window-size=2560,1440') options.add_argument('--disable-web-security') options.add_argument('--allow-running-insecure-content') options.add_argument('--ignore-certificate-errors') options.add_argument('--allow-insecure-localhost') options.add_option('goog:loggingPrefs', { browser: 'ALL' }) Capybara::Selenium::Driver.new(app, browser: :chrome, options: options) end 结论 继续执行这些调试步骤和建议的配置。如果这些方法都不能解决问题,请提供更具体的详细信息,例如您的 Puma 服务器配置、如何在测试环境中启动服务器,以及 Puma 和 Chrome 的输出日志。这将有助于进一步找出根本原因。
在 Tailwind 伪类名上使用 Capybara 查找 css 选择器
假设我有一个带有 Tailwind 类样式的单选按钮 我可以找到与水豚匹配的元素...
我正在为我的文章表单编写功能规范。 在一项测试中,我让 RSpec 使用标签查找某些表单输入: 期望(find_field(“标题”)).to_not be_nil 现在我想知道是否...
我有这样的方法: def self.click_button(标签) 选择器=“菜单.工具栏” page.within(选择器) 执行 page.click_link(标签) 结尾 结尾 在水豚 1.1.2(古代)上它工作正常,在
我正在尝试仅使用 Capybara 和 Rspec 提交没有按钮的表单(没有 Cucumber 或 Selenium,我知道已经有一个关于此的问题)。 我已经看到有一个要点是向子添加方法...
我的 Rails 集成测试失败了,我不明白为什么。我使用 Capybara 和 Selenium 作为驱动程序。 该测试检查 AJAX 调用后页面内容是否已被删除
Capybara 不访问 Rails 7.2 应用程序内的路线
我一直使用 Capybara 与 Rspec 以及 Rails 4、5 和 6(在没有 Selenium 的 Docker 容器内)来运行端到端测试。 现在,在 Rails 7.2 中,相同的测试失败了,因为 Capybara,我...
我正在尝试让 Capybara 在一个简单的 Ruby 脚本中运行——即没有/在 Rails 之外。这是脚本: 需要“红宝石” 需要“水豚” 需要“水豚/dsl” 包括水豚 卡皮...
在运行一个测试场景和另一个测试场景之间,默认的 Capybara 设置会打开空白页面并清除前一个场景中的 Cookie,从而消除第一个测试场景中记录的会话
如何使用水豚/selenium/chrome跳过“选择搜索引擎”
当我从水豚中打开 Chrome 时,我会看到以下屏幕: 这是 imgur 上的图像,因为堆栈溢出图像对我不起作用:https://i.imgur.com/UE9teHL.png 这会导致我的规格出现错误,...
SitePrism 有时找到元素,有时找不到,而 Capybara 可以
我正在使用 Capybara 和 Selenium 来测试我的网站。我还使用 Site Prism 作为页面对象模型。我现在可以让一切正常工作,但是,我不明白为什么有时会对页面进行操作
我目前正在使用 Cucumber 和 Ruby 页面对象来测试我的 Ruby on Rails 网站。 我正在尝试了解 Capybara 并决定是否应该将其添加到组合中,或者将页面对象替换为...
Capybara `attach_file` - Turbo 响应触发但不附加到页面
我对带有attach_file的文件字段进行了水豚测试(使用Cuprite驱动程序),该测试已经工作了一年。在 UI 中,Stimulus 控制器捕获点击、加载文件、发送请求...
Capybara-email 在 ActionMailer::Base.deliveries 中保存并打开特定电子邮件
我有一个即将更新的旧项目,目前使用 Capybara ~> 3.6 和 Capybara-email。 在特定测试中,有两封电子邮件巧合地发送到同一封电子邮件,我......
因此,当使用 Capybara 和 Chromedriver 自动化网页时,我有一个包含多个下拉菜单(具有相同选择)的页面。 它们都是反应选择的(我有一个帮助文件)。可悲的是他们...
如何编写一个尊重 Capybara 块内的 RSpec 匹配器?
我正在尝试编写一个自定义 RSpec 匹配器,用于 Rails 系统测试,在 Capybara 下运行 - 这个想法是匹配文本,同时忽略某些 标签。 这就是比赛...