gpt4 book ai didi

ruby-on-rails - 除了在 Capybara 中使用 sleep 之外,还有更好的选择吗?

转载 作者:行者123 更新时间:2023-12-04 01:09:32 25 4
gpt4 key购买 nike

在我的测试中,我有一个步骤,我填写一个字段并按 Enter。此字段然后在下一页返回结果集。

这是我的辅助方法:

def search(term)
fill_in('query-text', :with => term)
click_button('search-button')
end

在那之后,我有一个简单的步骤:
page.should have_content(tutor)

但是,问题是,即使我的页面加载后的页面带有结果,它之后的步骤即使它应该是假的。我在步骤中设置了一个调试器,当我手动检查它时,断言也失败了,正如我所期望的那样。我的假设是下一步是在页面重新加载之前进行检查。我在搜索方法的末尾放置了一个 sleep ,使其看起来像:
def search(term)
fill_in('query-text', :with => term)
click_button('search-button')
sleep 5
end

但我觉得使用 sleep 是解决这个问题的一种黑客方法。我正在使用 Capybara 2,因此删除了 wait_until 的使用。有没有比依赖 sleep 更好的方法来处理这个问题?

最佳答案

你有没有tutor你的 HTML 页面中的文本隐藏了吗? has_content?返回 true对于 html 中存在的任何文本,包括不可见的隐藏文本。所以我宁愿用 expect(page).to have_text(tutor) 替换它,它只检查页面上的可见文本。 .text也是很慢的方法,所以这些额外的分秒可能对你很方便。

另一种方法是在规范助手中恢复 wait_until 方法,因为它在大多数情况下非常方便:

def wait_until(timeout = DEFAULT_WAIT_TIME)
Timeout.timeout(timeout) do
sleep(0.1) until value = yield
value
end
end

无论如何,这比每次都等待固定的超时要好。

关于ruby-on-rails - 除了在 Capybara 中使用 sleep 之外,还有更好的选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14369024/

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