滚动到指定元素位置


                //滚动到页码位置,把条数选为100条每页
                $jsTo = 'arguments[0].scrollIntoView();';
                $query = Facebook\WebDriver\WebDriverBy::cssSelector('#data2Wrap div.oc-table-pagination div.oc-pagination-wrapper div.ovui-select > div');
                if ( $el = Account::getElementWait($this->driver, $query, 3) ) {
                    $this->msg('设置每页100条');
                    //页码选项100条
                    $this->driver->executeScript($jsTo, [$el]);
                }

获取页面中的一个元素


    /**
     * 获取页面中的一个元素
     * @param RemoteWebDriver $driver
     * @param WebDriverBy $query
     * @param int $timeout
     * @return RemoteWebElement|null
     */
    public static function getElement(RemoteWebDriver $driver, WebDriverBy $query, int $timeout=30)
    {
        while ($timeout>0) {
            try {
                return $driver->findElement($query);
            } catch (\Exception $e) {
                $timeout--;
                sleep(1);
            }
        }
        return null;
    }

    /**
     * 获取页面中的一个元素(等待), elementToBeClickable 参数表示一个可见可点击的元素
     * @param RemoteWebDriver $driver
     * @param WebDriverBy $query
     * @param int $timeout
     * @param string $condition \Facebook\WebDriver\WebDriverExpectedCondition::elementToBeClickable($query)
     * @link https://php-webdriver.github.io/php-webdriver/latest/Facebook/WebDriver/WebDriverExpectedCondition.html
     * @return RemoteWebElement|null
     */
    public static function getElementWait(RemoteWebDriver $driver, WebDriverBy $query, int $timeout=30, $condition='elementToBeClickable')
    {
        try {
            return $driver->wait($timeout, 1000)->until(
               $condition instanceof \Facebook\WebDriver\WebDriverExpectedCondition ? $condition : \Facebook\WebDriver\WebDriverExpectedCondition::$condition($query)
            );
        } catch (\Exception $e) {
            return null;
        }
    }

标签: none

添加新评论