我们在进行某些交易后的应用程序需要登录到第三方系统并输入一些数据。使用Capybara和硒进行了系统测试,效果很好,但是这是在测试时进行的。我想创建一个将在ActiveJob中运行的类/服务以执行相同的操作,因此在保存事务之后,我想调用ActiveJob.perform_later(params),并且该参数应传递给'external_system_integration'类并无头运行以登录到第三方站点,并输入以params接收的数据。
如何执行?
我的班级
require 'capybara/dsl'
require 'capybara/rspec'
require "selenium/webdriver"
class OrderDeskService
Capybara.default_driver = :webkit
include Capybara::DSL
def self.login
Capybara.register_driver :chrome do |app|
profile = Selenium::WebDriver::Chrome::Profile.new
profile["download.default_directory"] = DOWNLOAD_PATH
Capybara::Selenium::Driver.new(app, :browser => :chrome, :profile => profile)
end
Capybara.configure do |config|
config.run_server = false
config.app_host = 'https://app.orderdesk.me'
end
visit '/login'
sleep 10
end
end
绝对有可能在一个类中使用Capybara,但是按照您尝试的方式(调用Capybaras类方法)会与您的系统测试冲突,并给您带来各种麻烦。相反,您想在班级中使用手动会话管理,并在该会话上调用capybara方法。