Find element test with webdriver

Hi, if my test not find the element i want it to continue and output
that it was not found. But below code fails, i want my test to output '
Did not find element with id: gbgfba'. Thanks for your help in advance!
(element id should be gbqfba but have entered gbqfbax so it should fail)

require 'selenium-webdriver'
class Find_element

  def initialize
    @driver = Selenium::WebDriver.for :firefox
    @driver.get "http://google.com"
  end

  def by_id
    #By ID - driver.find_element(:id,<elementID>)
    if @driver.find_element(:id, "gbqfbax")
      puts 'Did find element with Id: gbqfba'
    else
      puts 'Did not find element with Id: gbqfba'
    end
  end
end

test = Find_element.new
test.by_id

···

--
Posted via http://www.ruby-forum.com/.

The best workaround I've seen for this was to use findelements to return
an array and check whether the size is 0.
Of course, you could always use Watir-Webdriver which is more versatile
and uses the same underlying driver with a better API.

http://watirmelon.com/2011/05/05/selenium-webdriver-vs-watir-webdriver-in-ruby/

···

--
Posted via http://www.ruby-forum.com/.

Thanks for your reply. According to array you mean something like below?
But it output that the method not find the element but it should. Any
ide?

  def by_id_array
    by_id = []
    by_id << @driver.find_element(:id, "gbqfba")
    if by_id.empty?
      puts 'Did find element with Id: gbqfba'
    else
      puts 'Did not find element with id gbqfba'
    end
  end

test = Find_element.new
test.by_id_array

--output--
Did not find element with id gbqfba

···

--
Posted via http://www.ruby-forum.com/.

I meant something like this:

array = @driver.find_elements(:id, "gbqfba")
puts 'Did not find element' if array.size = 0

As for whether the element exists to be found you'll need to ensure that
it's actually the ID you need to identify it. I recommend using Firebug
as it will give you the names, IDs, even the full XPath of any element.
Use the Interactive Ruby console (IRB) to test out what works in
real-time.

For example, this is what I'd do in watir-webdriver:

irb(main):001:0> require 'watir-webdriver'
=> true
irb(main):002:0> b = Watir::Browser.new
=> #<Watir::Browser:0x10e5b480 url="about:blank" title="">
irb(main):003:0> b.goto 'www.google.com'
=> "http://www.google.co.uk/"
irb(main):004:0> b.element(:id,'gbqfba').exists?
=> true

···

--
Posted via http://www.ruby-forum.com/.

Thanks for your answer Joel. I really want to solve this with Selenium
Webdriver even if watir is better. (cannot give up now :))

Your array tips dosent work when the element not exists or i maybe I do
something wrong? Expected output below would be "No", but the test fails
and will not complete the run. It complains about the row array =
@driver.find_element(:id, "gbqfqX")

  def by_id_array
     array = []
     array = @driver.find_element(:id, "gbqfqX")
    puts 'No' if array.size == 0
  end

···

--
Posted via http://www.ruby-forum.com/.

Your array tips dosent work when the element not exists or i maybe I do
something wrong? Expected output below would be "No", but the test fails
and will not complete the run. It complains about the row array =
@driver.find_element(:id, "gbqfqX")

Specifying exactly what that "complaint" is would help people help
you, but ...

  def by_id_array
     array =
     array = @driver.find_element(:id, "gbqfqX")
    puts 'No' if array.size == 0
  end

It helps to pay attention to what's actually returned by the method
you're calling. Try using this:

  def by_id
     begin
       @driver.find_element(:id, 'gbqfbax')
    rescue => err
       puts 'Did not find element with Id: gbqfba'
       puts "because of #{err} (#{err.class})"
    end
end

HTH,

···

On Wed, Dec 12, 2012 at 11:51 AM, Mattias A. <lists@ruby-forum.com> wrote:
--
Hassan Schroeder ------------------------ hassan.schroeder@gmail.com

twitter: @hassan

Thanks for your answer Joel. I really want to solve this with Selenium
Webdriver even if watir is better. (cannot give up now :))

Your array tips dosent work when the element not exists or i maybe I do
something wrong? Expected output below would be "No", but the test fails
and will not complete the run. It complains about the row array =
@driver.find_element(:id, "gbqfqX")

Be more specific (provide the error message).

   def by_id_array
      array =

The previous line is useless, because `array' is redefined
in the following line:

      array = @driver.find_element(:id, "gbqfqX")
     puts 'No' if array.size == 0
   end

You need to read Joel's answers more carefully, he suggested

   array = @driver.find_elements(:id, "gbqfba")

(mind the plural).

···

Am 12.12.2012 20:51, schrieb Mattias A.:

--
<https://github.com/stomar/&gt;