• FrankCucumber Core Frank Steps


    一些官方提供的Frank-Cucumber代码,可以参考去写我们自己的自动化测试代码

    WAIT_TIMEOUT = 240
    
    require 'rspec/expectations'
    
    # -- See -- #
    Then /^I wait to see "([^\"]*)"$/ do |expected_mark|
      Timeout::timeout(WAIT_TIMEOUT) do
        until view_with_mark_exists( expected_mark )
          sleep 0.1
        end
      end
    end
    
    Then /^I wait to not see "([^\"]*)"$/ do |expected_mark|
      sleep 3
      Timeout::timeout(WAIT_TIMEOUT) do
        while element_exists( "view marked:'#{expected_mark}'" )
          sleep 0.1
        end
      end
    end
    
    Then /^I wait to see a navigation bar titled "([^\"]*)"$/ do |expected_mark|
        Timeout::timeout(30) do
          values = frankly_map( 'navigationItemView', 'accessibilityLabel' )
          until values.include?(expected_mark)
            values = frankly_map( 'navigationItemView', 'accessibilityLabel' )
            sleep 0.1
          end
        end
    end
    
    Then /^I wait to not see a navigation bar titled "([^\"]*)"$/ do |expected_mark|
        Timeout::timeout(30) do
          values = frankly_map( 'navigationItemView', 'accessibilityLabel' )
          while values.include?(expected_mark)
            values = frankly_map( 'navigationItemView', 'accessibilityLabel' )
            sleep 0.1
          end
        end
    end
    
    Then /^I should see a "([^\"]*)" button$/ do |expected_mark|
      check_element_exists("button marked:'#{expected_mark}'")
    end
    
    Then /^I should see "([^\"]*)"$/ do |expected_mark|
      check_element_exists("view marked:'#{expected_mark}'")
    end
    
    Then /^I should not see "([^\"]*)"$/ do |expected_mark|
      check_element_does_not_exist("view marked:'#{expected_mark}'")
    end
    
    Then /I should see the following:/ do |table|
      values = frankly_map( 'view', 'accessibilityLabel' )
      table.raw.each do |expected_mark|
        values.should include( expected_mark.first )
      end
    end
    
    Then /I should not see the following:/ do |table|
      values = frankly_map( 'view', 'accessibilityLabel' )
      table.raw.each do |expected_mark|
        values.should_not include( expected_mark.first )
      end
    end
    
    Then /^I should see a navigation bar titled "([^\"]*)"$/ do |expected_mark|
      values = frankly_map( 'navigationItemView', 'accessibilityLabel' )
      values.should include(expected_mark)
    end
    
    Then /^I should see an alert view titled "([^\"]*)"$/ do |expected_mark|
      values = frankly_map( 'alertView', 'message')
      puts values
      values.should include(expected_mark)
    end
    
    Then /^I should not see an alert view$/ do
      check_element_does_not_exist( 'alertView' )
    end
    
    Then /^I should see an element of class "([^\"]*)" with name "([^\"]*)" with the following labels: "([^\"]*)"$/ do |className, classLabel, listOfLabels|
    	arrayOfLabels = listOfLabels.split(',');
    	arrayOfLabels.each do |label|
    		check_element_exists("view marked:'#{classLabel}' parent view:'#{className}' descendant view marked:'#{label}'")
    	end
    end
    
    Then /^I should see an element of class "([^\"]*)" with name "([^\"]*)" with a "([^\"]*)" button$/ do |className, classLabel, buttonName|
    	check_element_exists("view marked:'#{classLabel}' parent view:'#{className}' descendant button marked:'#{buttonName}'")
    end
    
    Then /^I should not see a hidden button marked "([^\"]*)"$/ do |expected_mark|
      element_is_not_hidden("button marked:'#{expected_mark}'").should be_false
    end
    
    Then /^I should see a nonhidden button marked "([^\"]*)"$/ do |expected_mark|
      element_is_not_hidden("button marked:'#{expected_mark}'").should be_true
    end
    
    Then /^I should see an element of class "([^\"]*)"$/ do |className|
    	element_is_not_hidden("view:'#{className}'")
    end
    
    Then /^I should not see an element of class "([^\"]*)"$/ do |className|
      selector = "view:'#{className}'"
      element_exists_and_is_not_hidden = element_exists( selector ) && element_is_not_hidden(selector)
      element_exists_and_is_not_hidden.should be_false
    end
    
    
    # -- Type/Fill in -- #
    
    When /^I type "([^\"]*)" into the "([^\"]*)" text field$/ do |text_to_type, field_name|
      text_fields_modified = frankly_map( "textField placeholder:'#{field_name}'", "setText:", text_to_type )
      raise "could not find text fields with placeholder '#{field_name}'" if text_fields_modified.empty?
      #TODO raise warning if text_fields_modified.count > 1
    end
    
    # alias 
    When /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |text_field, text_to_type|
      When %Q|I type "#{text_to_type}" into the "#{text_field}" text field|
    end
    
    When /^I fill in text fields as follows:$/ do |table|
      table.hashes.each do |row|
        When %Q|I type "#{row['text']}" into the "#{row['field']}" text field|
      end
    end
    
    # -- Rotate -- #
    Given /^the device is in (a )?landscape orientation$/ do |ignored|
      # for some reason the simulator sometimes starts of reporting its orientation as 'flat'. Workaround for this is to rotate the device then wait a bit
      if 'flat' == frankly_current_orientation
        rotate_simulator_right
        sleep 1
      end 
      
      unless frankly_oriented_landscape?
        rotate_simulator_left
        sleep 1
        raise "expected orientation to be landscape after rotating left, but it is #{frankly_current_orientation}" unless frankly_oriented_landscape?
      end
    end
    
    Given /^the device is in (a )?portrait orientation$/ do |ignored|
      # for some reason the simulator sometimes starts of reporting its orientation as 'flat'. Workaround for this is to rotate the device then wait a bit
      if 'flat' == frankly_current_orientation
        rotate_simulator_right
        sleep 1
      end 
    
      unless frankly_oriented_portrait?
        rotate_simulator_left
        sleep 1
        raise "Expected orientation to be portrait after rotating left, but it is #{frankly_current_orientation}" unless frankly_oriented_portrait?
      end
    end
    
    When /^I simulate a memory warning$/ do
      simulate_memory_warning
    end
    
    Then /^I rotate to the "([^\"]*)"$/ do |direction|
      if direction == "right"
        rotate_simulator_right
      elsif direction == "left"
        rotate_simulator_left
      else 
        raise %Q|Rotation direction specified ("#{direction}") is invalid. Please specify right or left.|
      end
      sleep 1
    end
    
    # -- touch -- #
    When /^I touch "([^\"]*)"$/ do |mark|
      selector = "view marked:'#{mark}' first"
      if element_exists(selector)
         touch( selector )
      else
         raise "Could not touch [#{mark}], it does not exist."  
      end
      sleep 1
    end
    
    When /^I touch "([^\"]*)" if exists$/ do |mark|
      sleep 1
      selector = "view marked:'#{mark}' first"
      if element_exists(selector)
      	touch(selector)
        sleep 1
      end
    end
    
    When /^I touch the first table cell$/ do
        touch("tableViewCell first")
    end
    
    When /^I touch the table cell marked "([^\"]*)"$/ do |mark|
      touch("tableViewCell marked:'#{mark}'")
    end
    
    When /^I touch the (\d*)(?:st|nd|rd|th)? table cell$/ do |ordinal|
        ordinal = ordinal.to_i - 1
        touch("tableViewCell index:#{ordinal}")
    end
    
    Then /I touch the following:/ do |table|
      values = frankly_map( 'view', 'accessibilityLabel' )
      table.raw.each do |expected_mark|
        touch( "view marked:'#{expected_mark}'" )
        sleep 2
      end
    end
    
    When /^I touch the button marked "([^\"]*)"$/ do |mark|
      touch( "button marked:'#{mark}'" )
    end
    
    When /^I touch the "([^\"]*)" action sheet button$/ do |mark|
      touch( "actionSheet threePartButton marked:'#{mark}'" )
    end
    
    When /^I touch the (\d*)(?:st|nd|rd|th)? action sheet button$/ do |ordinal|
      ordinal = ordinal.to_i
      touch( "actionSheet threePartButton tag:#{ordinal}" )
    end
    
    When /^I touch the (\d*)(?:st|nd|rd|th)? alert view button$/ do |ordinal|
      ordinal = ordinal.to_i
      touch( "alertView threePartButton tag:#{ordinal}" )
    end
    
    # -- switch -- #
    
    When /^I flip switch "([^\"]*)" on$/ do |mark|
      selector = "view:'UISwitch' marked:'#{mark}'"
      views_switched = frankly_map( selector, 'setOn:animated:', true, true )
      raise "could not find anything matching [#{uiquery}] to switch" if views_switched.empty?
    end
    
    When /^I flip switch "([^\"]*)" off$/ do |mark|
      selector = "view:'UISwitch' marked:'#{mark}'"
      views_switched = frankly_map( selector, 'setOn:animated:', false, true )
      raise "could not find anything matching [#{uiquery}] to switch" if views_switched.empty?
    end
    
    When /^I flip switch "([^\"]*)"$/ do |mark|
      touch("view:'UISwitch' marked:'#{mark}'") 
    end
    
    Then /^switch "([^\"]*)" should be on$/ do |mark|
    #  switch_states = frankly_map( "view:'Switch' marked:'#{mark}'", "isOn" )
      switch_states = frankly_map( "view accesibilityLabel:'#{mark}'", "isOn" )
      puts "test #{switch_states.inspect}"
      
      if switch_states == 0
        puts "Switch #{mark} is ON"
      else
        puts "Switch #{mark} is OFF, flim switch ON"
        Then %Q|I flip switch "#{mark}"|
      end
    end
    
    Then /^switch "([^\"]*)" should be off$/ do |mark|
      switch_states = frankly_map( "view:'UISwitch' marked:'#{mark}'", "isOn" )
      puts "test #{switch_states.inspect}"
      
      if switch_states == 0
        puts "Switch #{mark} is ON, flip switch OFF"
        Then %Q|I flip switch "#{mark}"|
      else
        puts "Switch #{mark} is OFF"
      end
    end
    
    
    # -- misc -- #
    
    When /^I wait for ([\d\.]+) second(?:s)?$/ do |num_seconds|
      num_seconds = num_seconds.to_f
      sleep num_seconds
    end
    
    Then /^a pop\-over menu is displayed with the following:$/ do |table|
      sleep 1
      table.raw.each do |expected_mark|
        check_element_exists "actionSheet view marked:'#{expected_mark}'"
      end
    end
    
    Then /^I navigate back$/ do
      touch( "navigationItemButtonView" )
    end
    
    When /^I dump the DOM$/ do
      dom = frankly_dump
    end
    
    When /^I quit the simulator/ do
      quit_simulator 
    end
    
  • 相关阅读:
    如何将一棵树转化成二叉树
    雪碧图的使用
    CSS简介,引入方式,文字和文本样式设置
    表格Table和表单元素
    html 中< col>标签和< colgroup>标签的区别
    Emmet的HTML语法(敲代码的快捷方式)
    抖音风格字体效果
    几种有效减小电脑系统盘使用量的方法
    ubuntu 机器名称修改方法
    Ubuntu 为基于X应用程序增加启动项的正确做法
  • 原文地址:https://www.cnblogs.com/simonshi2012/p/2160734.html
Copyright © 2020-2023  润新知