使用Capybara、Rspec、Selenium网络驱动程序的不可处理实体



问题:

我无法使用Capybara、rsspec和selenium网络驱动程序登录web应用程序。我可以在相应的字段中填写用户名和密码,但当我尝试单击登录按钮时,应用程序没有登录。相反,应用程序返回"不可处理实体"(尝试启用和禁用cookie(。使用无头铬64 Linux。

lib/abcd.rb

def click_login user, password
visit "https://www.******.com/users/sign_in"
fill_in 'user[email]', :with => user
fill_in 'user[password]', :with => password
click_button 'Login'
end

测试用例:

require_relative 'lib/*****.rb'
describe 'Visit Websites', type: :feature, driver: :selenium_chrome_headless do
it "TC001_Test case 1" do
click_login "user@account.com", "password123"
expect(page).to have_title "Welcome to home page"
end
output:// application stays in the same page
it "TC002_Test case 2" do
find(:xpath,".account menu").click
expect(page).to have_title "Account details page"
end

驾驶员设置-进近1

def setup_driver
Capybara.register_driver :selenium_chrome_headless do |app|
Capybara::Selenium::Driver.new(app, browser: :chrome, options: driver_options, :driver_path => 'bin/chromedriver')
end
Capybara.configure do |config|
config.run_server = false
config.default_driver = :selenium_chrome_headless
end
end
def driver_options
options = Selenium::WebDriver::Chrome::Options.new(binary: 'bin/headless-chromium')
arguments = %w[--headless --disable-gpu --window-size=1280x1696
--disable-application-cache --disable-infobars --no-sandbox
--hide-scrollbars --enable-logging --log-level=0
--single-process --ignore-certificate-errors --homedir=/tmp]
arguments.each do |argument|
options.add_argument(argument)
end
options
end

驾驶员设置-进近2

def setup_driver
Capybara.register_driver :selenium_chrome_headless do |app|
Capybara::Selenium::Driver.new(app, browser: :chrome, options: driver_options, :driver_path => 'bin/chromedriver')
end
Capybara.configure do |config|
config.run_server = false
config.default_driver = :selenium_chrome_headless
end
end
def driver_options
options = Selenium::WebDriver::Chrome::Options.new(binary: 'bin/headless-chromium')
arguments = %w[--headless --disable-gpu --window-size=1280x1696
--disable-application-cache --disable-infobars --no-sandbox
--hide-scrollbars --enable-logging --log-level=0
--single-process --ignore-certificate-errors --homedir=/tmp]
arguments.each do |argument|
options.add_argument(argument)
end
options
end

您还没有确切解释您在这里要做什么(测试本地rails应用程序、测试远程应用程序等(,但总的来说,一切听起来都与默认设置中的预期完全一样。默认情况下,每个RSpec测试都应该完全独立于其他测试(您应该能够单独运行任何测试和/或以随机顺序运行所有测试(,因此每个测试之间的所有内容都会重置(it块(。这意味着你需要为每个测试登录(在块可以帮助干燥之前(。此外,功能测试与正常的单元测试不同,您应该测试整个用户流/行为,而不仅仅是单个期望——否则您的测试将需要数小时才能运行。

对于登录问题,听起来您实际上还没有在测试的系统中创建帐户。如果这是你正在测试的本地应用程序,在那里你可以直接连接到数据库,你应该查看设备或工厂,以帮助设置测试的正确状态。检查您的日志以确认,但我猜您会看到由于用户名/密码组合无效,登录实际上失败了。

相关内容

  • 没有找到相关文章