Blame view

vendor/facebook/webdriver/lib/Remote/RemoteTargetLocator.php 3.1 KB
ad2e91f7   Mihail   move multyparser ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
  <?php
  // Copyright 2004-present Facebook. All Rights Reserved.
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  namespace Facebook\WebDriver\Remote;
  
  use Facebook\WebDriver\WebDriverTargetLocator;
  use Facebook\WebDriver\WebDriverElement;
  use Facebook\WebDriver\WebDriverAlert;
  use Facebook\WebDriver\WebDriver;
  
  /**
   * Used to locate a given frame or window for RemoteWebDriver.
   */
  class RemoteTargetLocator implements WebDriverTargetLocator {
  
    protected $executor;
    protected $driver;
  
    public function __construct($executor, $driver) {
      $this->executor = $executor;
      $this->driver = $driver;
    }
  
    /**
     * Switch to the main document if the page contains iframes. Otherwise, switch
     * to the first frame on the page.
     *
     * @return WebDriver The driver focused on the top window or the first frame.
     */
    public function defaultContent() {
      $params = array('id' => null);
      $this->executor->execute(DriverCommand::SWITCH_TO_FRAME, $params);
  
      return $this->driver;
    }
  
    /**
     * Switch to the iframe by its id or name.
     *
     * @param WebDriverElement|string $frame The WebDriverElement,
                                             the id or the name of the frame.
     * @return WebDriver The driver focused on the given frame.
     */
    public function frame($frame) {
      if ($frame instanceof WebDriverElement) {
        $id = array('ELEMENT' => $frame->getID());
      } else {
        $id = (string)$frame;
      }
  
      $params = array('id' => $id);
      $this->executor->execute(DriverCommand::SWITCH_TO_FRAME, $params);
  
      return $this->driver;
    }
  
    /**
     * Switch the focus to another window by its handle.
     *
     * @param string $handle The handle of the window to be focused on.
     * @return WebDriver Tge driver focused on the given window.
     * @see WebDriver::getWindowHandles
     */
    public function window($handle) {
      $params = array('name' => (string)$handle);
      $this->executor->execute(DriverCommand::SWITCH_TO_WINDOW, $params);
  
      return $this->driver;
    }
  
    /**
     * Switch to the currently active modal dialog for this particular driver
     * instance.
     *
     * @return WebDriverAlert
     */
    public function alert() {
      return new WebDriverAlert($this->executor);
    }
  
    /**
     * Switches to the element that currently has focus within the document
     * currently "switched to", or the body element if this cannot be detected.
     *
     * @return RemoteWebElement
     */
    public function activeElement() {
      $response = $this->driver->execute(DriverCommand::GET_ACTIVE_ELEMENT);
      $method = new RemoteExecuteMethod($this->driver);
      return new RemoteWebElement($method, $response['ELEMENT']);
    }
  }