【问题标题】:Capybara click_link sometimes doesn't workCapybara click_link 有时不起作用
【发布时间】:2011-10-29 22:47:53
【问题描述】:

我使用默认配置的 Capybara 1.0.0。

click_link "some existing text" # --sometimes-- 不起作用。很奇怪。

find_link "some existing text" # 总是有效

这可能是时间问题;或者可能不是因为 find_link 工作得很好。

我已经通过 save_and_open_page 检查了生成的输出文件,也可以。另外,我增加了等待时间等。但是,也没有帮助。

在我完全找到Capybara的源头之前。你觉得哪里出了问题?

问候

【问题讨论】:

  • prolly 问题在于您使用 xpath 或 css 选择器定位元素的方式?

标签: testing capybara


【解决方案1】:

每当我的测试出现间歇性问题时,我首先检查的事情之一就是它们的运行顺序。

根据您设置 Rspec 的方式,可能会在您每次运行套件时随机化运行规范的顺序。这意味着有时一切都会过去,有时则不会。

Rspec 将输出一个种子值,您可以使用它以相同的顺序重新运行测试以进行调试。

【讨论】:

    【解决方案2】:

    尝试使用这种语法click_link('', href: some_path)

    【讨论】:

      【解决方案3】:

      链接可能与另一个元素(如弹出窗口)重叠,或者在页面加载后一段时间后被 Ajax 激活。这在很大程度上取决于您使用的页面类型。

      作为一般提示,我建议直接使用查找器,例如:

        # Note :visible => true, it will throw an error if element is overlapped
        find(:xpath, "//a[.='some existing text']", visible: true).click
      
        # Another approach
        wait_until(15) { first(:xpath, "//a..", visible: true) }.click
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多