如何使用Selenium在Ruby Capybara中启用ChromeDriver登录?



我试图在红宝石水豚中注册硒铬驱动程序。但不幸的是,我没有找到任何有关启用日志记录的信息。我使用了添加了 perfLoggingPrefs 的选项:{enableNetwork: true},并遇到了我应该启用日志记录的问题。有谁知道如何在Ruby/Capybara中启用ChromeDriver的日志记录? 所以这是我现在的代码:

Capybara.register_driver(:selenium_mobile) do |app|
options = Selenium::WebDriver::Chrome::Options.new
options.add_emulation(device_name: 'iPhone X')
options.add_option(:perfLoggingPrefs, {enableNetwork: true})
p "Default Selenium driver is used"
cps = Selenium::WebDriver::Remote::Capabilities.chrome(
loggingPrefs: {browser: 'ALL'},
perfLoggingPrefs: {enableNetwork: true})
Capybara::Selenium::Driver.new(app, browser: :chrome, 
desired_capabilities: cps, options: 
options)
end
end

另外,我尝试输入命令行参数,例如

options.add_argument('verbose')
options.add_argument('log-path=./tmp/chromedriver.log')

无论如何,我遇到了问题:

Selenium::WebDriver::Error::InvalidArgumentError: invalid argument: entry 0 of 'firstMatch' 无效 从无效参数:指定了 perfLoggingPrefs,但未启用性能日志记录

我已经读到ChromeDriver日志记录可以通过LoggingPreferences启用,但我找不到任何关于Ruby的提及。

有谁知道如何在注册Selenium驱动程序时在Ruby/Capybara中启用ChromeDriver的日志记录?

您已经在功能中添加了日志记录首选项。

此外,您可以创建一个方法来将日志存储在您需要的任何位置。这是我用来在您需要的特定文件夹上写入日志的方法。你可以在钩子之后调用此方法。此外,如果要在任何 CI/CD 应用程序中查看,可以存储为工件

def capture_browser_logs
errors = Capybara.page.driver.browser.manage.logs.get(:browser)
.select { |e| e.level == "SEVERE" && e.message.present? }
.map(&:message)
.to_a
return if errors.none?
message = errors.join("nn")
# writes console errors to a log file
log_file_path = Rails.root.join("tmp", "smoke_tests", "console_logs", "js_errors.log")
FileUtils.mkdir_p(log_file_path.dirname) unless File.directory?(log_file_path.dirname)
logging_destination = if ENV["RAILS_LOG_TO_STDOUT"].present? && ENV["RAILS_LOG_TO_STDOUT"].to_s == "true"
STDOUT
else
log_file_path
end
logger = Logger.new(logging_destination)
logger.error(message)
end

相关内容

  • 没有找到相关文章

最新更新