@param WebDriverCoordinates $where

@return RemoteMouse
420922
public function mouseDown(WebDriverCoordinates $where = null)
    {
        $this->moveIfNeeded($where);
        $this->executor->execute(DriverCommand::MOUSE_DOWN);

        return $this;
    }
506084
public function getHandler( Location $location )
    {
        if ( isset( $this->map[$location->contentInfo->remoteId] ) )
        {
            return $this->map[$location->contentInfo->remoteId];
        }

        return new NullHandler();
    }
587207
private function transmute(Where $where)
    {
        $this->stack    = $where->stack;
        $this->element  = $where->element;
        $this->operator = $where->operator;
        $this->values   = $where->values;
    }
1168303
public function doubleClick(WebDriverCoordinates $where = null)
    {
        $this->moveIfNeeded($where);
        $this->executor->execute(DriverCommand::DOUBLE_CLICK);

        return $this;
    }
1004523
public function doubleClick(WebDriverElement $element = null)
    {
        $this->action->addAction(
            new WebDriverDoubleClickAction($this->mouse, $element)
        );

        return $this;
    }
794712
public function dragAndDropBy(WebDriverElement $source, $x_offset, $y_offset)
    {
        $this->action->addAction(
            new WebDriverClickAndHoldAction($this->mouse, $source)
        );
        $this->action->addAction(
            new WebDriverMoveToOffsetAction($this->mouse, null, $x_offset, $y_offset)
        );
        $this->action->addAction(
            new WebDriverButtonReleaseAction($this->mouse, null)
        );

        return $this;
    }
488467
protected function formatWhereClause($where)
    {
        if (!empty($where)) {
            if (stripos($where, 'where') === false || stripos($where, 'select') !== false) {
                $where = ' where ' . $where;
            }
        }

        return $where;
    }
159520
public function click(WebDriverCoordinates $where = null)
    {
        $this->moveIfNeeded($where);
        $this->executor->execute(DriverCommand::CLICK, [
            'button' => 0,
        ]);

        return $this;
    }
280542
private static function makeRelative($location) {
    if (self::$scriptDirAbs == null) {
      self::$scriptDirAbs = dirname(FileUtil::realpath($_SERVER['SCRIPT_FILENAME'])).'/';
    }
    return URIUtil::makeRelative($location, self::$scriptDirAbs);
  }
1041553
public function setPosition(WebDriverPoint $position)
    {
        $params = [
            'x' => $position->getX(),
            'y' => $position->getY(),
            ':windowHandle' => 'current',
        ];
        $this->executor->execute(DriverCommand::SET_WINDOW_POSITION, $params);

        return $this;
    }
298504
public static function convertElement($element, RemoteWebDriver $driver)
    {
        if ($element instanceof RemoteWebElement) {
            return new self($element, $driver);
        }

        return $element;
    }
1044029
public function release(WebDriverElement $element = null)
    {
        $this->action->addAction(
            new WebDriverButtonReleaseAction($this->mouse, $element)
        );

        return $this;
    }
344128
public function where($where, $regex_constraint = null)
    {
        if (is_array($where)) {
            $other_rule = $where;
        } else {
            $other_rule = [$where => $regex_constraint];
        }

        $this->with = array_merge($this->with, $other_rule);

        return $this;
    }
590047
public function rightJoinOn($table, $where)
    {
        $where = func_get_args();
        $table = array_shift($where);

        $this->join[] = [self::RIGHT, $table, $where, false];

        return $this;
    }
132155
public static function deleteBatch($where = null): IResult
    {
        $query = static::query();
        $query = static::parseWhere($query, $where);

        // 删除前
        Event::trigger(static::__getRealClassName() . ':' . ModelEvents::BEFORE_BATCH_DELETE, [
            'query' => $query,
        ], null, \Imi\Model\Event\Param\BeforeBatchDeleteEventParam::class);

        $result = $query->delete();

        // 删除后
        Event::trigger(static::__getRealClassName() . ':' . ModelEvents::AFTER_BATCH_DELETE, [
            'result'=> $result,
        ], null, \Imi\Model\Event\Param\BeforeBatchDeleteEventParam::class);

        return $result;
    }
52197
public function selectOne($tableName, $where = null, $afterWhere = '')
    {
        $stmt = $this->executeSelect($tableName, '*', $where, $afterWhere);
        $row = $stmt->fetch(PDO::FETCH_ASSOC);
        $stmt->closeCursor();
        return $row;
    }
849344
public function outerJoinUsing($table, $where)
    {
        $where = func_get_args();
        $table = array_shift($where);

        $this->join[] = [self::OUTER, $table, $where, true];

        return $this;
    }