Finders.t 1.5 KB

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