按钮没有使用capybara点击(使用Firefox和xvfb)

时间:2017-09-21 10:12:42

标签: ruby-on-rails selenium cucumber capybara

我试图在docker中设置黄瓜测试,所以我发现我需要使用xvfb才能至少在没有GUI的情况下运行测试。经过几个小时的挣扎,我终于开始测试,但现在:

我正在测试通过表单发送数据。我填写必要的字段,然后点击按钮,但它没有做任何事情。我在浏览页面时工作正常;没有docker(有或没有无头Firefox)在本地运行黄瓜是没关系的,但在一个案例中失败了。在我调试时,它会看到按钮std::u32string返回click,但它什么也没做。此外,current_url不会更改,并且Product不会保存到DB(因此我假设按钮没有被点击)。

对于未编译的脚本文件是否有问题,可能JavaScript在无头Firefox或其他方面无法正常工作?

我已将capybara更新到最新版本。测试代码:

'ok'

错误信息是: step 'I click on Products link' expect(page).to have_content "You don't have any products yet!" click_link('ADD YOUR FIRST PRODUCT') expect(page).to have_content 'Add new product' fill_in('Product Name', with: 'Product') fill_in('Price', with: 19.99) fill_in('Description', with: 'This is test product') find(:xpath, "//input[@type='submit'][@value='SAVE PRODUCT']").click expect(page).to have_content 'Your product is LIVE' # it fails HERE click_link('BACK TO PRODUCTS') expect(page).to have_content 'Product' click_link('Edit') expect(page).to have_content 'This is test product' find_all(:xpath, "//a[@href='#productVariants']").first.click expect(page).to have_content 'CREATE VARIANTS' find_all(:xpath, "//a[@href='#customizeWidget']").first.click expect(page).to have_content 'Button background' find_all(:xpath, "//a[@href='#flashSales']").first.click expect(page).to have_content 'Enable Sales Boosters' (我应该发布页面内容吗?)
它的工作方式是这样 - 保存后,显示编辑产品的相同页面,但显示模态,应该有此文本。我保存了截图,未重新加载页面并且未显示模式(如果正确保存了产品,则会显示模态)。

2 个答案:

答案 0 :(得分:0)

尝试在测试环境中预编译资产/ javascripts。问题可能在于您的javascript未运行。

答案 1 :(得分:0)

原来问题是我的容器中安装了错误的Firefox版本,我猜我的版本的selenium(2.53.0)在FF 52中无法正常工作。