Testing 黄瓜+;水豚-填写表单困难-找不到元素

Testing 黄瓜+;水豚-填写表单困难-找不到元素,testing,cucumber,capybara,Testing,Cucumber,Capybara,我正在一个已经完成的项目中做我的hello world测试应用程序,我正在经历一些场景,我对所看到的情况感到困惑 我正在使用: Capybara cumber 当我们需要Javascript 所有这些都在Sinatra应用程序上实现 RSpec单独计算,但这不是利息 问题: 当以cumber features/#{feature_name}.feature的形式运行cumber测试时,假设我在特定页面上。我可以通过CSS ID找到元素,但不能单击它们 When(/^I log in with

我正在一个已经完成的项目中做我的hello world测试应用程序,我正在经历一些场景,我对所看到的情况感到困惑

我正在使用:
  • Capybara
  • cumber
  • 当我们需要
    Javascript
  • 所有这些都在Sinatra应用程序上实现
  • RSpec单独计算,但这不是利息
问题: 当以
cumber features/#{feature_name}.feature
的形式运行cumber测试时,假设我在特定页面上。我可以通过
CSS ID
找到元素,但不能单击它们

When(/^I log in with email "(.*?)" and password "(.*?)"$/) do |email, password|
  step %{I am on login page}

  expect(page).to have_css('#login-form')
  expect(page).to have_css('#login-button')

  within("#login-form") do 
    fill_in '#username', with: email
    fill_in '#password', with: password
    click_button 'dfalkjsdfalsdkfja dflkjasdf alkdsjfasd lfkjsf s'  # Which should fail, but odesn't :'(
  end

  click_button 'Sign In'
  # click_button '#login-button'   # This fails
end
即使我对
#登录表单
使用完全随机的不存在的ID,以下测试也将通过。正如你看到的,我有一个按钮,上面有一些愚蠢的文字。如果我把它作为身份证,也没什么区别。考试通过了

但是,当我单独使用它们而不使用内部块时,就找不到元素

但在上面你可以看到
expect(第页)。to
语句可以找到它们

上面是一些类似于我在
Capybara
repo中看到的例子

我的问题是:
  • 我是否可以使用
    CSS选择器
    将目标设置为例如:
    #登录表单
  • 在块内的
    中使用不存在的选择器是否失败?我的情况不是这样的
  • 为什么像
    这样的东西在“#password”中填入“password”
    fail saying元素not found,而上面的断言似乎找到了它
  • 我是一个新手,所以我建议在设置方面可能出现问题。示例链接也将是伟大的
附言: 考虑到回购协议中的示例,忘记询问以下
fill_in
block中的“电子邮件”是什么。似乎不是元素的id

fill_in 'Email', :with => 'user@example.com'
使现代化 在进行了一些尝试之后,我发现下面的工作(查找元素并填充/单击它)。但是
块中的
不会填充表单。正如我所解释的,任何配置都可以影响
块中的

When(/^I log in with email "(.*?)" and password "(.*?)"$/) do |email, password|
  step %{I am on login page}

  find('form#login-form').find('input#username').set email
  find('form#login-form').find('input#password').set password
  find('form#login-form').find('#login').click

  within("form#login-form") do 
    fill_in 'input#username', with: email
    fill_in 'input#password', with: password
    click_button '#login'
  end

end

我无法在
块中的
中重现不存在选择器的问题。对我来说确实失败了。对于您的其他问题,问题的主要症结在于
fill_in
click_按钮
不支持CSS选择器-请参阅。@JustinKo:我认为Cucumber/Capybara没有问题。我认为这可能是一些配置问题。文档中不是说“名称、ID或标签文本”吗。我使用的表单没有标签,因此必须依赖于名称和ID。名称是我尝试过的“user[username]”。除非水豚最近更改了,否则您的两次尝试(
find
fill_in
做了两件不同的事情。
find
方法正在寻找一个元素
谢谢。现在让我试试。但是如果元素被找到了,它不应该引起错误吗?我正在进行测试,但在更改属性ID时注意到了一次。