2013-05-16 37 views
3

我正在通过黄瓜测试浏览器数据。我正在浏览页面上的链接列表,以确定我应该点击哪个链接。如何找出字符串是否包含存储在变量中的单词

所以,假设我有一份甜品链接列表,我想找到一个苹果酱。我称之为一种方法,通过链接,并找到了一个苹果酱后,我通过苹果酱的名称。

字符串“apple sauce”存储在@dessert中,并且由于@dessert会经常变化,所以我需要知道是否有方法可以查找变量@dessert是否存储“apple sauce”。

当我做@ dessert.text.include? “#@甜品”我一直假冒。为了做出点击它的决定,我需要这是真实的。当我本身评价@dessert我有“苹果汁” ......

我怎样才能摆脱引号(“),使他们不被评估?我觉得这是我搞乱了!

+0

为什么'@ dessert'包括本身? – tadman

回答

1

的标准的方式来测试一个字符串有一个可替换的是要么使用正则表达式,在那里你可以描述为模式“足够接近”的比赛,或者搜索文字字符串:

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

我不知道为什么你的问题有"#@dessert",因为它的计算结果与此类似。"#{@dessert}"可能是你想要的,#{...}内联一个字符串值,但这是多余的,因为您只是针对单个变量进行测试而没有其他数据。如果x是一个字符串,x"#{x}"将评估为等效字符串。

+1

恩,'@x = 11; “#@ x”'给你'“11”'。尽管如此,这是一种恼人的捷径,但却是一条捷径 –

+1

如果'@ x'是'11',那么它不是一个字符串,它是一个Fixnum。我在具体情况下说它已经是一个字符串了。你说的正确,“#@ x”'只是一个丑陋而不灵活的说'@ x.to_s'的方式。你不会经常使用“#@ x”'。 ''#{@ x}“似乎是这样做的首选方式,所以插值很清晰。 – tadman

+2

至少对我来说,Ruby的一些Perl语言是有用的,但是插值的特殊形式是我想看到的一种。这可能是一个胡思乱想的老头子。 –

0

您似乎在比较@dessert,一个带有@ dessert.text的对象,该对象的一个​​属性。此外,您正在使用一种字符串插值形式,我和其他人一起推荐避免。

尝试

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

,看看它是否返回true。

0

下面是一个例子,我进入一个容器并将所有链接拉出来看到点击,导航到页面,然后声明页面标题,网址和面包屑都包含在链接内的文本容器。你可以添加一个if语句来评估一个链接是否有特定的文本,如果有的话,点击它。

从LIB文件

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 

从规范文件(这是不使用一套黄瓜,但代码仍然是类似的)

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 
相关问题