示例#1
0
 public function __construct(Manager $manager, array $config)
 {
     parent::__construct($manager, $config);
     $this->dialogs = Manager::readConfig($config, self::CFG_ERROR_DIALOGS);
     $this->loading = Manager::readConfig($config, self::CFG_LOADING_ICON);
     $this->interval = intval(Manager::readConfig($config, self::CFG_CHECK_INTERVAL, self::DEFAULT_INTERVAL));
     $this->timeout = intval(Manager::readConfig($config, self::CFG_TIMEOUT, self::DEFAULT_TIMEOUT));
     if (!is_array($this->dialogs)) {
         throw new \InvalidArgumentException('Dialogs is not an array');
     }
     array_walk($this->dialogs, [__CLASS__, 'assertDialogRule']);
     Screen::assertRules($this->loading);
     if ($this->interval <= 0) {
         $this->interval = self::DEFAULT_INTERVAL;
         $this->logger->warning('%s: Interval is not positive integer, use default value %u.', [__CLASS__, self::DEFAULT_INTERVAL]);
     }
     $this->delayOffset = intval($this->delay * 0.15);
     if ($this->timeout < $this->interval * 3) {
         $this->timeout = $this->interval * 3;
         $this->logger->warning('%s: Timeout is not science, use minimum value %u.', [__CLASS__, $this->timeout]);
     }
     $this->screen = Screen::instance($manager, $this->app);
     $this->delay = Delay::instance($manager, $this->app);
     $this->input = Input::instance($manager, $this->app);
 }
示例#2
0
 public function run(array $context = [])
 {
     $rectangles = Manager::readConfig($context, self::CFG_RECTANGLES);
     if (!is_array($rectangles) || ($count = count($rectangles)) === 0) {
         return Manager::RET_LOOP;
     }
     $delay = (int) Manager::readConfig($context, self::CFG_DELAY, self::DEFAULT_DELAY);
     if ($delay <= 0) {
         $delay = self::DEFAULT_DELAY;
         $this->logger->warning('%s: delay milliseconds should be positive integer. Use default value %u.', [__CLASS__, $delay]);
     }
     $delayOffset = intval($delay / 10);
     $this->logger->info('Tap screen for %u point(s) with delay %u-%u ms.', [$count, $delay, $delayOffset]);
     foreach ($rectangles as $rectangle) {
         $this->input->tapInRect($rectangle);
         $this->delay->delayOffset($delay, $delayOffset);
     }
     return Manager::RET_LOOP;
 }
示例#3
0
 public function __construct(Manager $manager, array $config)
 {
     parent::__construct($manager, $config);
     $config = $config + $manager->getBaseComponentConfig($this->app);
     $this->package = Manager::readConfig($config, self::CFG_PACKAGE_NAME);
     $this->adb = ADB::instance($manager, $this->app);
     $this->detector = LoadingDetection::instance($manager, $this->app);
     $this->screen = Screen::instance($manager, $this->app);
     $this->input = Input::instance($manager, $this->app);
 }