【问题标题】:Error with watir trying to match copyright statement尝试匹配版权声明时出现错误
【发布时间】:2012-05-23 04:08:16
【问题描述】:

您好,我正在使用带有 rspec 的 watir,但遇到以下代码块的问题:

我不明白我做错了什么。我得到的确切错误是“语法错误,意外$end,期待keyword_end @b.text.include? 《方舟©1》

describe "Copyright statement" do 
   it "should exist" do 
    @b.text.include? "Ark © 1"
   end
end

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: ruby testing rspec watir watir-webdriver


    【解决方案1】:

    我认为你的缩进偏离了第一端需要另一个空间来排列。

    describe "Copyright statement" do 
       it "should exist" do 
        @b.text.include? "Ark © 1"
       end 
    end
    

    一旦你更正了这个,你应该能够看到@ChuckvanderLinden 和我认为是真正的问题 - 你丢失并结束了,但没有看到文件的其余部分,我们无法确定。

    我确实从 Dave Thomas 那里看到了这个提示,

    http://pragdave.blogs.pragprog.com/pragdave/2008/12/ruby-19-can-check-your-indentation.html

    如果您使用 -w 标志运行该文件,它将让您更好地了解问题以及它在代码中的确切位置。

    ruby -w samplefile.rb
    

    这将为您提供类似于以下内容的输出:

    t.rb:5: warning: mismatched indentations at 'end' with 'if' at 3
    t.rb:9: warning: mismatched indentations at 'end' with 'def' at 2
    t.rb:10: syntax error, unexpected $end, expecting keyword_end
    

    更容易找到您的错误,

    【讨论】:

    • 是的,但这是 Ruby,而不是 Python,所以我怀疑这是他问题的原因
    • @ChuckvanderLinden 要么他失踪,要么他失踪并结束pragdave.blogs.pragprog.com/pragdave/2008/12/…
    • 我同意,但我没有看到他给我们的代码中缺少任何内容。没有看到更多该文件让我感到困惑,为什么他可能会收到该错误。
    • 现在这个小技巧(来自您在上面评论中提供的链接)值得入场。我建议修改您的答案以包括如何使用该 -w 开关的说明(在整理他的缩进之后)
    • 感谢 PragDave 的这个提示!对以后很有帮助!!谢谢!
    【解决方案2】:

    @SteveRobillard 在他的回复中解决了缺少的 end 错误消息,但是您在如何尝试在那里使用 rspec 时遇到了另一个大问题。问题是您并没有真正对 .include 的结果做任何事情?方法,因为那里没有 .shou 。您的代码正在执行该方法,但只是有效地将返回到位桶中的“真”或“假”扔掉。该测试永远不会失败,因为您缺少任何类型的验证。我认为这条线需要更接近

    describe "Copyright statement" do 
       it "should exist" do 
         @b.text.should include "Ark © 1"
       end 
    end     
    

    更正这可能不会解决您缺少的最终问题,但如果没有类似的东西,您的“测试”实际上不会测试任何东西。

    另外,如果是我,我不仅希望看到版权在 html 中的某处,而且在特定位置,例如页脚,通常位于某种容器(例如 div)中。如果该 div 的 id 为“footer”,那么这部分代码将是这样的

    it "should be found within the footer" do
      @browser.div(:id => 'footer').text.should include 'copyright © Yoyodyne 1984'
    end
    

    查看与 Watir 一起使用的 rspec 的一个好方法是查看 watir 本身的 rspec 文件,例如 div 元素的规范以及它应该做什么的所有测试都在 https://github.com/watir/watirspec/blob/master/div_spec.rb

    【讨论】:

    • 你的答案就是为什么我喜欢像你这样的人,他们会不遗余力地帮助他人 - 谢谢
    • 你好@SteveRobillard 和 Chuck.. 你的回答很有见地。尤其是 Chuck 的 .. 我基本上从普通的 Watir 开始,手动计算错误和成功。然后我搬到了 Rspec,显然没有按照 Rspec 的方式做事。我也认为我发现了错误。它与“结束”的缩进无关。我最后收到此错误消息...“无效的多字节字符(US-ASCII)/Users/buzz/Desktop/For Ark/Watir Tests/ark-home. rb:69: 语法错误,意外 $end,期待关键字_end @b.text.include? "Ark © #{Ark::YEAR}"
    • 我认为这是 {copyright} 字符和 Rspec 的问题...不过不知道如何解决。我还在我的 Rspec 测试中使用评估为 True 或 False 的代码 :: 例如:描述“Ark Search for People image”是否“应该存在” do @b.image(:src => "ark.com/img/search_for_people.png").exists? end end
    • 计算结果为真或假的代码的问题在于,除非有东西作用于该信息,否则它对测试没有影响。您需要使用一种方法来评估结果并将测试报告为通过或失败。这是许多单元测试框架中的“断言”。在 BDD 的情况下,它是使用 .should 方法(因为它创建了一个更具可读性的测试)
    • 非常感谢@chuck。我使用 .should 重写了我的所有测试,现在它与 rspec 配合得很好!
    【解决方案3】:

    我在网上搜索错误“invalid multibyte char (US-ASCII)”时找到了解决方案

    将此行添加到顶部有助于版权声明!

    # encoding: UTF-8
    

    它只是文件顶部的一个简单注释,但它解决了版权字符和 Rspec/Ruby 1.9 的问题。

    感谢大家的帮助和支持。我真的很感激!

    【讨论】:

      猜你喜欢
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多