12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <?php
- namespace Tests;
- use Laravel\Dusk\Browser as BaseBrowser;
- use Laravel\Dusk\Component;
- use Laravel\Dusk\ElementResolver;
- class Browser extends BaseBrowser
- {
- /**
- * @var static
- */
- public $parent;
- /**
- * 作用与 with 方法完全相同,不同的在于此方法可以让下层 Broser 对象继承当前 Component 的方法.
- *
- * @param string|Component $selector
- * @param \Closure $callback
- * @return $this
- */
- public function extend($selector, $callback)
- {
- $browser = new static(
- $this->driver, new ElementResolver($this->driver, $this->resolver->format($selector))
- );
- $browser->parent = $this;
- if ($this->page) {
- $browser->onWithoutAssert($this->page);
- }
- if ($selector instanceof Component) {
- $browser->onComponent($selector, $this->resolver);
- }
- call_user_func($callback, $browser);
- return $this;
- }
- public function __call($method, $parameters)
- {
- $parentComponent = $this->parent ? $this->parent->component : null;
- if ($parentComponent && method_exists($parentComponent, $method)) {
- array_unshift($parameters, $this);
- $parentComponent->{$method}(...$parameters);
- return $this;
- }
- return parent::__call($method, $parameters);
- }
- }
|