gpt4 book ai didi

ruby-on-rails - Poltergeist/Capybara 测试无法间歇性地找到 CSS

转载 作者:行者123 更新时间:2023-12-04 18:24:13 24 4
gpt4 key购买 nike

我正在使用 Capybara 和 Poltergeist,但我一生都无法让我的所有测试始终通过。我有一个特别是日期选择器的问题。它应该非常简单 - 用户点击输入,输出选择的月份(第一张图片)。然后单击一个月份,然后会出现一个日期选择(第二个图像),在该日期选择了该月的某一天。

first image
second image

现在,我的代码如下所示:

all(:css, 'input.from_date').last.click

expect(page).to have_css(".datepicker-months")
within(:css, '.datepicker-months') { find('.month', :text => 'Jun', match: :first).click }
expect(page).not_to have_css(".datepicker-months")

expect(page).to have_css(".datepicker-days")
within(:css, '.datepicker-days') { find('.day', :text => work[:start_date].stamp('31').to_i.to_s, match: :first).click } #.to_i.to_s used to remove leading zeros
page.assert_no_selector('.datepicker-days')

有时它会过去,但大多数时候它会说:
expected to find css ".datepicker-days" but there were no matches

或者
expected not to find css ".datepicker-months", found 1 match: "« 2015 » JanFebMarAprMayJunJulAugSepOctNovDec"

如果我尝试通过调用 binding.pry 来调试它,我可以在控制台中逐步运行这些命令,并且它运行良好。我的超时设置为绰绰有余(我认为)。任何想法为什么这个测试间歇性失败?

我的配置:
Capybara.javascript_driver = :poltergeist

Capybara.default_wait_time = 60
Capybara.register_driver :poltergeist do |app|

Capybara::Poltergeist::Driver.new(app, {
timeout: 60,
js_errors: false,
phantomjs_logger: File.open("log/phantomjs.log", "a")})
end

更新:

在过程的每一步之后添加 sleep(0.5) 时,它每次都会通过。这是不好的做法,我应该能够在不这样做的情况下编写测试。 :/

最佳答案

每当我遇到这些不一致时,我都会尝试寻找其他的东西来反对,这样你就不必指望 sleep 了。

如果有任何类型的动画开始/停止,您可以尝试针对这些进行断言。

您也可以尝试更具体地说明您当前的期望,因为您点击找到的对象似乎没有问题

expect(page).not_to have_css('.datepicker-months .month', :text => 'Jun')

如果其中任何一项让您走得更远,请告诉我们。

关于ruby-on-rails - Poltergeist/Capybara 测试无法间歇性地找到 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28464090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com