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,我也尝试了一些类似存在的代码。
答案 0 :(得分:-1)
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
现在您的代码将完美运行。现有方法将为您返回。