Finders.t 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #! /usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use Test::More;
  5. BEGIN: {
  6. unless (use_ok('Selenium::Remote::Driver')) {
  7. BAIL_OUT("Couldn't load Selenium::Remote::Driver");
  8. exit;
  9. }
  10. }
  11. use FindBin;
  12. use lib $FindBin::Bin . '/lib';
  13. use TestHarness;
  14. my $harness = TestHarness->new(
  15. this_file => $FindBin::Script
  16. );
  17. my %selenium_args = %{ $harness->base_caps };
  18. my $driver = Selenium::Remote::Driver->new(%selenium_args);
  19. $driver->get('http://danielgempesaw.com/Selenium-Remote-Driver/xhtmlTest.html');
  20. # This depends explicitly on the page we're visiting (xhtmlTest.html),
  21. my %finders = (
  22. class => 'navigation',
  23. class_name => 'navigation',
  24. css => 'html',
  25. id => 'linkId',
  26. link => 'this goes to the same place',
  27. link_text => 'this goes to the same place',
  28. name => 'windowOne',
  29. partial_link_text => 'this goes to the same',
  30. tag_name => 'html',
  31. xpath => '//html'
  32. );
  33. foreach my $by (keys %finders) {
  34. my $locator = $finders{$by};
  35. my $method = 'find_element_by_' . $by;
  36. ok($driver->can($method), $method . ': installed properly');
  37. my $elem = $driver->$method($locator);
  38. ok($elem, $method . ': finds an element properly');
  39. ok($elem->isa('Selenium::Remote::WebElement'), $method . ': element is a WebElement');
  40. {
  41. # Briefly suppress warning output for prettier tests
  42. my $warned = 0;
  43. local $SIG{__WARN__} = sub { $warned++ };
  44. ok(!$driver->$method('missing') , $method . ': does not croak on unavailable elements');
  45. ok($warned, $method . ': unavailable elements throw a warning');
  46. }
  47. }
  48. done_testing;