如何在Capybara中重新抓取页面?

时间:2019-02-24 22:44:59

标签: javascript ruby-on-rails capybara

这是我的页面规格,该页面使用按钮触发一些Javascript来扩展截断的/usr/local/bin/文本。

/usr/bin/

当我运行Rails服务器并在浏览器中访问该页面时,“更多信息”按钮肯定可以正常工作。但是,当我运行规范时,该按钮似乎不起作用:

description

现在,我知道完全有可能是某个问题导致按钮实际上不起作用,但是我想知道问题是否出在我们是否正在检查 it 'gets the description and inventory', js: true do product = Product.create!(name: "Test Product", inventory: 0, description: "This is a test description with more text than should be there.") customer = Customer.create(:name => Faker::Name.name) invoice = Invoice.create order = Order.create(customer: customer, invoice: invoice) order.products << product visit products_path expect(page).to have_content(product.name, count: 1) expect(page).not_to have_content product.description click_button "More Info" expect(page).to have_content product.description expect(page).to have_content "Sold Out" product.inventory = 1 product.save visit products_path click_button "More Info" expect(page).to have_content "Available" end 从点击按钮之前就被刮掉了。

有人知道这是否确实是问题所在吗?是否有办法“重新抓取”页面?我不想重新加载或刷新页面,因为那样会使JS进入其初始按钮前状态。

1 个答案:

答案 0 :(得分:1)

假设此功能测试并且您按照Capybara自述文件中的指示进行了capybara/rspec的操作,则Capybara应该在测试中看到js元数据,交换到Capybara.javascript_driver配置的驱动程序(默认为:selenium-将打开Firefox),并且由于Capybara从不缓存该页面(每次您在浏览器中查看实时页面时都不会缓存该页面),因此无需重新加载/刷新/重新整理页面。

如果上述所有内容都正确,并且您看到此问题,则说明您的页面上有错误,或者您正在使用过时的驱动程序(Poltergeist等)来运行不支持JS的测试您实际上是在页面中使用的。