RowSelector.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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 '@container';
  18. }
  19. /**
  20. * 浏览器包含组件的断言
  21. *
  22. * @param Browser $browser
  23. * @return void
  24. */
  25. public function assert(Browser $browser)
  26. {
  27. // $browser->assertVisible('table:visible thead th .checkbox-grid');
  28. }
  29. /**
  30. * 读取组件的元素快捷方式.
  31. *
  32. * @return array
  33. */
  34. public function elements()
  35. {
  36. return [
  37. '@container' => '#grid-table',
  38. '@all' => 'input.select-all',
  39. '@item' => 'input.grid-row-checkbox',
  40. ];
  41. }
  42. /**
  43. * 选中.
  44. *
  45. * @param Browser $browser
  46. * @param string|array $value
  47. *
  48. * @return Browser
  49. */
  50. public function choose(Browser $browser, $value)
  51. {
  52. foreach ((array) $value as $v) {
  53. $browser->script(
  54. <<<JS
  55. setTimeout(function () {
  56. $('{$this->formatSelector($browser, '@item')}[data-id="{$v}"]').prop('checked', true);
  57. }, 10)
  58. JS
  59. );
  60. }
  61. return $browser;
  62. }
  63. /**
  64. * 选中所有.
  65. *
  66. * @param Browser $browser
  67. *
  68. * @return Browser
  69. */
  70. public function selectAll(Browser $browser)
  71. {
  72. $browser->script("Dcat.ready(
  73. setTimeout(function () {
  74. $('{$this->formatSelector($browser)} .select-all').first().click()
  75. }, 10)
  76. );");
  77. return $browser;
  78. }
  79. }