watir - ruby​​代码“未定义的方法存在?pr存在”

时间:2017-03-13 12:24:09

标签: ruby watir watir-webdriver

    require 'rubygems'
    require "watir"

    browser = Watir::Browser.new :chrome,:switches => %w[--disable-notifications]
    i=0;
    begin

    #TODO logining to the facebook
    browser.goto 'linkedin.com'
    browser.text_field(:id => 'login-email').set 'ananthragavendra@gmail.com'
    browser.text_field(:id => 'login-password').set 'ru09ec32'
    browser.button(type: 'submit').click

    puts '**** linkedin logged in ****'

    sea = browser.div(:class => 'nav-search-bar')
    puts sea
    if sea.exits?
    browser.div(:class => 'nav-search-bar').click
    browser.div(:class => 'type-ahead-input-container').text_field.set 'wipro'
    browser.button(:class => 'nav-search-button').click
    puts '**** searched, the results for wipro is shown '
    else
    puts 'div not present'
    end


    side = browser.div(:class => 'right-rail search-right-rail')
    puts side
    if side.present?
    puts 'div present'
    side1 = browser.divs(:class => 'right-rail search-right-rail')
    else
    puts 'div not present'
    end



    #TODO exception handling
    rescue Exception => e
    p "Error Found..... #{e.message}"
    end

执行上述操作时抛出错误,我可以实时找到div但是我无法使用if命令检查div,我也尝试了一些类似存在的代码。

2 个答案:

答案 0 :(得分:-1)

Rails将{p> present?添加到Object。所以如果你不在Rails中,你可能意味着:!side.nil?

答案 1 :(得分:-1)

首先,此行if sea.exits?错误,请将其更改为if sea.exists?

您的代码是完美的,但非常微小的更改需要实现WATIR的预定义等待语句。

您使用了此声明

side = browser.div(:class => 'right-rail search-right-rail')

如果你这样编写,那么WATIR的预定义等待不起作用,因为你要调用Watir::Div对象的方法是发生四次检查的地方,

例如,如果你打电话

browser.div(:class => 'right-rail search-right-rail').click

然后将进行以下四次检查

1)exist?
2)enabled?
3)present?
4)writable?

但是如果你没有调用我已经显示的任何函数,那么它将不会返回元素,因为语句甚至在元素加载之前就被执行了,那么作为那个side.present的结果?是假的,它会给你div not present

的结果

因此,请按以下方式更改代码

browser.div(:class => 'right-rail search-right-rail').click
  side = browser.div(:class => 'right-rail search-right-rail')
  puts side
  if side.present?
    puts 'div present'
    side1 = browser.divs(:class => 'right-rail search-right-rail')
  else
    puts 'div not present'
  end

现在您的代码将完美运行。现有方法将为您返回。