3

我正在通过黄瓜测试浏览器数据。我正在查看页面上的链接列表,以确定我应该单击哪个链接。

所以假设我有一个甜点链接列表,我想找到一个用于苹果酱的链接。我调用了一种方法,该方法通过链接并在我将名称苹果酱传递给它之后找到具有苹果酱的方法。

字符串“苹果酱”存储在@dessert 中,由于@dessert 会经常更改,我需要知道是否有办法找出“苹果酱”是否存储在变量@dessert 中。

当我做@dessert.text.include?“#@dessert”我一直是假的。我需要这样做才能决定点击它。当我自己评估@dessert时,我有“苹果酱”......

我怎样才能摆脱引号( " )所以它们不被评估?我认为这把我搞砸了!

4

3 回答 3

1

测试字符串中是否包含另一个字符串的标准方法是使用正则表达式,您可以在其中描述“足够接近”匹配的模式,或者搜索文字子字符串:

@dessert = "apple sauce;pears;walnuts"
@dessert.include?("apple sauce")
# => true

我不知道为什么你的问题会"#@dessert"被评估为一个完全一样的字符串。"#{@dessert}"可能是您想要的,其中内#{...}联一个字符串值,但这是多余的,因为您只针对没有其他数据的单一变量进行测试。如果是一个字符串开头,x"#{x}"评估为等效字符串。x

于 2013-05-16T02:40:05.727 回答
0

您似乎正在将 @dessert(一个对象)与 @dessert.text(该对象的一个​​属性)进行比较。此外,您正在使用一种字符串插值形式,我和这里的其他人建议避免使用这种形式。

尝试

@dessert.text.include? "#{@dessert.text}"

看看它是否返回true。

于 2013-05-16T05:14:12.563 回答
0

这是一个示例,我进入容器并拉出所有链接以查看点击,导航到页面,然后断言页面标题、url 和面包屑都包含容器内链接中的文本。您可以添加一个 if 语句来评估链接是否包含特定文本,如果有,请单击它。

从库文件

def pull_text_and_href_from_continent_link
    @continents.each do |continent|
        find(".continents li.#{continent}").hover
        page.should have_selector(".#{continent} .continent-wrapper", :visible => true)
        page.all(:css, '.continents .continent-wrapper a').each do |nav_link|
          @array.push(:text => nav_link.native.attribute("text"), :href => nav_link[:href])
        end
    end
end

来自规范文件(这是一个不使用 cuke 的套件,但代码仍然相似)

it "should have the right page title, url, and breadcrumbs" do
  @array.each do |info|
    if info[:text].include?('See all')
      pp "Skipping the see all link for this container"
    else
      visit_page_logged_out(info[:href])
      assert_correct_page_url info[:href]
      assert_country_breadcrumbs remove_specials(info[:text])
      assert_page_title info[:text]
    end
  end
于 2013-05-16T17:00:21.650 回答