gpt4 book ai didi

javascript - Capybara 在 JS 完成之前进行火灾测试

转载 作者:行者123 更新时间:2023-11-28 05:49:23 25 4
gpt4 key购买 nike

我有一个 capybara 测试,用于检查页面上是否找到了类。该类允许用户查看侧边栏。这是下面的测试。

feature 'Lesson Sidebar', js: true do
before do
visit course_lesson_path
end
context 'persists the lesson sidebar display' do
before do
find('#lesson-sidebar__lesson-2').trigger('click')
end

scenario do
expect(page).to have_selector('.lesson-page__sidebar--expanded', visible: false)
end
end
end

当点击#lesson-sidebar__lesson-2时,JS代码只是将类附加到侧边栏元素上。该代码位于文档就绪调用中。

$(document).ready(function() {
$('.lesson-subnav__heading').on("mousedown", "#lesson-sidebar__lesson-2", function (e) {
$('#sidebar').addClass('lesson-page__sidebar--expanded')
})
})

这是我收到的错误响应。

Capybara::ElementNotFound:
Unable to find css "#lesson-sidebar__lesson-2"

这是我的问题。测试将随机失败。不仅适用于本测试,还适用于本页面内的其他测试。我的假设是测试在 JS 有机会完成之前运行,这就是测试有时失败的原因。我该如何解决这个问题以便测试每次都通过?

最佳答案

更新:实际错误的发布表明,在 before block 中查找没有找到该元素,这意味着这与 wait_for_ajax 调用无关或事件处理程序绑定(bind)。如果执行诸如 find('#lesson-sidebar__lesson-2', wait: 20).click 之类的操作无法使错误消失,那么您的页面加载存在问题(或者您'我输错了选择器)尽管我不希望这会造成间歇性故障。检查您的测试日志以了解实际发出的请求和/或添加

sleep 10
page.save_screenshot

在查找/单击之前查看页面以查看是否是您所期望的。另一件要检查的事情是你在驱动程序配置中显示了 JS 错误(我假设你使用了 poltergeist,因为大多数默认使用 .trigger 的人通常都是这样)

关于javascript - Capybara 在 JS 完成之前进行火灾测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38206882/

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