RowSelector.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace Tests\Browser\Components\Grid;
  3. use Laravel\Dusk\Browser;
  4. use Tests\Browser\Components\Component;
  5. /**
  6. * 行选择器.
  7. */
  8. class RowSelector extends Component
  9. {
  10. /**
  11. * 获取组件的 root selector
  12. *
  13. * @return string
  14. */
  15. public function selector()
  16. {
  17. return '@item';
  18. }
  19. /**
  20. * 浏览器包含组件的断言
  21. *
  22. * @param Browser $browser
  23. * @return void
  24. */
  25. public function assert(Browser $browser)
  26. {
  27. $browser->assertVisible('table thead th .checkbox-grid');
  28. }
  29. /**
  30. * 读取组件的元素快捷方式
  31. *
  32. * @return array
  33. */
  34. public function elements()
  35. {
  36. return [
  37. '@all' => 'input.select-all',
  38. '@item' => 'input.grid-row-checkbox',
  39. ];
  40. }
  41. /**
  42. * 选中.
  43. *
  44. * @param Browser $browser
  45. * @param string|array $value
  46. *
  47. * @return Browser
  48. */
  49. public function choose(Browser $browser, $value)
  50. {
  51. foreach ((array) $value as $v) {
  52. $browser->script(
  53. <<<JS
  54. setTimeout(function () {
  55. $('{$this->formatSelector($browser)}[data-id="{$v}"]').prop('checked', true);
  56. }, 10)
  57. JS
  58. );
  59. }
  60. return $browser;
  61. }
  62. /**
  63. * 选中所有
  64. *
  65. * @param Browser $browser
  66. *
  67. * @return Browser
  68. */
  69. public function selectAll(Browser $browser)
  70. {
  71. $browser->script("Dcat.ready(
  72. setTimeout(function () {
  73. $('.grid-select-all').first().click()
  74. }, 10)
  75. );");
  76. return $browser;
  77. }
  78. }