1
0

11-action-chains.t 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. use strict;
  2. use warnings;
  3. use JSON;
  4. use Test::More;
  5. use Test::Selenium::Remote::Driver;
  6. use Selenium::ActionChains;
  7. use Selenium::Remote::WDKeys 'KEYS';
  8. use FindBin;
  9. use lib $FindBin::Bin . '/lib';
  10. use TestHarness;
  11. $Selenium::Remote::Driver::FORCE_WD2 = 1;
  12. my $harness = TestHarness->new(
  13. this_file => $FindBin::Script
  14. );
  15. # while Firefox is transferring to geckodriver, it doesn't support the
  16. # entire JSONWireProtocol - at the time of writing, this test depends
  17. # on `POST sendKeysToActiveElement` and `POST
  18. # /session/:sessionId/moveTo`, neither of which are in geckodriver.
  19. my %selenium_args = (
  20. %{ $harness->base_caps },
  21. browser_name => 'chrome'
  22. );
  23. {
  24. my $driver = Test::Selenium::Remote::Driver->new(%selenium_args);
  25. my $action_chains = Selenium::ActionChains->new( driver => $driver );
  26. $driver->get('https://www.google.com');
  27. my $input_text = $driver->find_element("//input[\@type='text']");
  28. # type text to search on Google and press 'Enter'
  29. $action_chains->send_keys_to_element( $input_text, "test" )
  30. ->key_down( [ KEYS->{'enter'} ] )->key_up( [ KEYS->{'enter'} ] )
  31. ->perform;
  32. $driver->find_elements_ok( "//*[\@class='hdtb-mitem']",
  33. "We found Google's navbar" );
  34. $driver->quit;
  35. }
  36. {
  37. my $driver = Test::Selenium::Remote::Driver->new(%selenium_args);
  38. my $action_chains = Selenium::ActionChains->new( driver => $driver );
  39. $driver->get("http://medialize.github.io/jQuery-contextMenu/demo.html");
  40. my $right_click_zone =
  41. $driver->find_element("//*[contains(text(),'right click me')]");
  42. $action_chains->context_click($right_click_zone)->perform;
  43. $driver->find_element("//*[text()='Paste']")
  44. ->is_displayed_ok("The menu is correctly displayed on right click");
  45. $driver->quit;
  46. }
  47. done_testing;