1
0

Test-Selenium-Remote-WebElement.t 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. use Test::Tester;
  2. use Test::More;
  3. use Test::MockObject::Extends;
  4. use Test::Selenium::Remote::WebElement;
  5. # Start off by faking a bunch of Selenium::Remote::WebElement calls succeeding
  6. my $successful_element = Test::Selenium::Remote::WebElement->new;
  7. $successful_element = Test::MockObject::Extends->new( $successful_element );
  8. $successful_element->set_true(qw/
  9. clear
  10. click
  11. submit
  12. is_selected
  13. is_enabled
  14. is_displayed
  15. send_keys
  16. /);
  17. $successful_element->set_list('get_tag_name','iframe');
  18. $successful_element->set_list('get_value','my_value');
  19. $successful_element->set_list('get_text','my_text');
  20. # Given input 'foo' to 'get_attribute', return 'my_foo';
  21. $successful_element->mock('get_attribute',sub { 'my_'.$_[1] } );
  22. check_test(
  23. sub { $successful_element->clear_ok },
  24. {
  25. ok => 1,
  26. name => "clear... no return value",
  27. diag => "",
  28. }
  29. );
  30. check_test(
  31. sub { $successful_element->clear_ok('test_name') },
  32. {
  33. ok => 1,
  34. name => "test_name... no return value",
  35. diag => "",
  36. }
  37. );
  38. check_test(
  39. sub { $successful_element->click_ok },
  40. {
  41. ok => 1,
  42. name => "click... no return value",
  43. diag => "",
  44. }
  45. );
  46. check_test(
  47. sub { $successful_element->submit_ok },
  48. {
  49. ok => 1,
  50. name => "submit... no return value",
  51. diag => "",
  52. }
  53. );
  54. check_test(
  55. sub { $successful_element->is_selected_ok },
  56. {
  57. ok => 1,
  58. name => "is_selected",
  59. diag => "",
  60. }
  61. );
  62. check_test(
  63. sub { $successful_element->is_enabled_ok },
  64. {
  65. ok => 1,
  66. name => "is_enabled",
  67. diag => "",
  68. }
  69. );
  70. check_test(
  71. sub { $successful_element->is_displayed_ok },
  72. {
  73. ok => 1,
  74. name => "is_displayed",
  75. diag => "",
  76. }
  77. );
  78. check_test(
  79. sub { $successful_element->send_keys_ok('Hello World', 'I sent keys') },
  80. {
  81. ok => 1,
  82. name => "I sent keys... no return value",
  83. diag => "",
  84. }
  85. );
  86. # tag_name_*
  87. {
  88. check_test(
  89. sub { $successful_element->tag_name_is('iframe','Got an iframe tag?') },
  90. {
  91. ok => 1,
  92. name => "Got an iframe tag?",
  93. diag => "",
  94. }
  95. );
  96. check_test(
  97. sub { $successful_element->tag_name_isnt('BOOM','Not BOOM.') },
  98. {
  99. ok => 1,
  100. name => "Not BOOM.",
  101. diag => "",
  102. }
  103. );
  104. check_test(
  105. sub { $successful_element->tag_name_like(qr/frame/,'Matches iframe tag?') },
  106. {
  107. ok => 1,
  108. name => "Matches iframe tag?",
  109. diag => "",
  110. }
  111. );
  112. check_test(
  113. sub { $successful_element->tag_name_unlike(qr/BOOM/,"tag_name doesn't match BOOM") },
  114. {
  115. ok => 1,
  116. name => "tag_name doesn't match BOOM",
  117. diag => "",
  118. }
  119. );
  120. }
  121. # value_*
  122. {
  123. check_test(
  124. sub { $successful_element->value_is('my_value','Got an my_value value?') },
  125. {
  126. ok => 1,
  127. name => "Got an my_value value?",
  128. diag => "",
  129. }
  130. );
  131. check_test(
  132. sub { $successful_element->value_isnt('BOOM','Not BOOM.') },
  133. {
  134. ok => 1,
  135. name => "Not BOOM.",
  136. diag => "",
  137. }
  138. );
  139. check_test(
  140. sub { $successful_element->value_like(qr/val/,'Matches my_value value?') },
  141. {
  142. ok => 1,
  143. name => "Matches my_value value?",
  144. diag => "",
  145. }
  146. );
  147. check_test(
  148. sub { $successful_element->value_unlike(qr/BOOM/,"value doesn't match BOOM") },
  149. {
  150. ok => 1,
  151. name => "value doesn't match BOOM",
  152. diag => "",
  153. }
  154. );
  155. }
  156. # text_*
  157. {
  158. check_test(
  159. sub { $successful_element->text_is('my_text','Got an my_text value?') },
  160. {
  161. ok => 1,
  162. name => "Got an my_text value?",
  163. diag => "",
  164. }
  165. );
  166. check_test(
  167. sub { $successful_element->text_isnt('BOOM','Not BOOM.') },
  168. {
  169. ok => 1,
  170. name => "Not BOOM.",
  171. diag => "",
  172. }
  173. );
  174. check_test(
  175. sub { $successful_element->text_like(qr/tex/,'Matches my_text value?') },
  176. {
  177. ok => 1,
  178. name => "Matches my_text value?",
  179. diag => "",
  180. }
  181. );
  182. check_test(
  183. sub { $successful_element->text_unlike(qr/BOOM/,"text doesn't match BOOM") },
  184. {
  185. ok => 1,
  186. name => "text doesn't match BOOM",
  187. diag => "",
  188. }
  189. );
  190. }
  191. # attribute_is($attr_name,$match_str,$test_name);
  192. # attribute_isnt($attr_name,$match_str,$test_name);
  193. # attribute_like($attr_name,$match_re,$test_name);
  194. # attribute_unlike($attr_name,$match_re,$test_name);
  195. {
  196. local $TODO = 'not implemented yet.';
  197. check_test(
  198. sub { $successful_element->attribute_is('foo', 'my_foo', 'attribute_is matched') },
  199. {
  200. ok => 1,
  201. name => "attribute_is matched",
  202. diag => "",
  203. }
  204. );
  205. }
  206. # css_attribute_is($attr_name,$match_str,$test_name);
  207. # css_attribute_isnt($attr_name,$match_str,$test_name);
  208. # css_attribute_like($attr_name,$match_re,$test_name);
  209. # css_attribute_unlike($attr_name,$match_re,$test_name);
  210. done_testing();