1
0

Finders.t 1.5 KB

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