Ruby Selenium Webdriver测试脚本(需要建议)

时间:2013-12-18 11:14:48

标签: ruby-on-rails ruby testing selenium

我有一个小任务来创建ruby + webdriver测试脚本。但我只能使用ruby和webdriver。如果没有Rspec或测试单元,你能给我一些建议吗? 此外,我需要使用一些OOP模型进行此测试。

以下要求:

测试用例

  1. 运行浏览器
  2. 清除浏览器Cookie
  3. 转到网站
  4. 点击“查找”
  5. 在搜索字段中输入关键字并提交表单
  6. 使用搜索结果解析第一页:将搜索结果第一页上给出的信息存储为您键入的结构化数据(即散列哈希值或散列数组,无论哪种结构都可以解析)。
  7. 确保解析后的搜索结果中每个项目的至少一个属性(标题,目标,技能等)包含关键字。登录stdout,自由职业者和属性包含关键字,哪些不包含关键字。
  8. 点击随机自由职业者的头衔
  9. 进入自由职业者的个人资料
  10. 检查每个属性值是否等于存储在#6
  11. 中创建的结构中的属性值之一
  12. 检查至少有一个属性是否包含关键字
  13. 要求:

    1. 浏览器和关键字应该是可配置的。测试应该与它们的任意组合一起运行。
    2. 想象一下,这不是一个简单的小任务,而是一个可扩展的大型可扩展项目。因此,实施适当的OOP模型/方法。
    3. 选择证明模型/方法。
    4. 应该相应地记录每个动作,每个比较结果等(即到标准输出)。目标:当你的脚本通过时 - 详细的测试用例步骤应该被放入STDOUT,所以任何人都可以阅读它并重复完全相同的步骤和验证,但是手动。
    5. 代码应该被很好地评论,所以任何人都可以很容易地找出那里正在执行的操作以及这些代码块/方法/等的目的是什么。
    6. 目前我已经完成了1-5步并坚持了6步。我需要以哈希哈希的方式保存用户数据,然后再进行下一步。

          # encoding: utf-8
      require "selenium-webdriver"
      require "test/unit"
      
      class Tests < Test::Unit::TestCase
      
        def setup
          @keyword = "qa tester"
          @driver = Selenium::WebDriver.for :firefox
          @base_url = "https://www.odesk.com"
          @driver.manage.timeouts.implicit_wait = 30
      
        end
      
        def teardown
          @driver.quit
      
        end
      
        def element_present?(how, what)
          @driver.find_element(how, what)
          true
        rescue Selenium::WebDriver::Error::NoSuchElementError
          false
        end
      
        def test_1
      
          @driver.get(@base_url + "/")
          @driver.find_element(:link, "Hire Freelancers").click
          @driver.find_element(:name, "q").clear
          @driver.find_element(:name, "q").send_keys @keyword
          @driver.find_element(:css, "input.oSearchSubmit").click
      
      
        end
      
      end
      

1 个答案:

答案 0 :(得分:0)

正如orde提到的那样,您的问题相当广泛,但您至少可以通过修改“test_1”方法开始执行第6步,以便解析无序的搜索结果列表:

def test_1
  @driver.get(@base_url + "/")
  @driver.find_element(:link, "Hire Freelancers").click
  @driver.find_element(:name, "q").clear
  @driver.find_element(:name, "q").send_keys @keyword
  @driver.find_element(:css, "input.oSearchSubmit").click
  results_list = @driver.find_element(:xpath, "//ul[@class='oSearchResultsList']")
  individual_results = results_list.find_elements(:xpath, "//li[@class='oSearchResultItem']")
  individual_results.each do
    # do some parsing of each search result here
  end
end

此时,您只需决定要提取哪些特定数据元素并填充哈希值(或您选择的任何数据结构)。