滚动到指定元素位置


                //滚动到页码位置,把条数选为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;
        }
    }

一次同事紧急求助,说是ZIP解压不出来,电脑上RAR工具提示文件损坏,他手机上也解压失败,也许是他在企业微信中直接打开,解压失败了。
拿到文件后,我用7z在打开ZIP文件时失败了,提示CRC检校失败。
然而我在手机在下载到手机内存里,用手机上的系统成功解压出来了。
最后在电脑上尝试了一些方式仍然无法解压出来:
1、WIN11系统自带文件解压失败
2、7z的CRC选项中的几个选项都尝试了还是失败

最后用git安装后的base命令行成功解压了,命令:

unzip xx.zip 

使用PHPExcel库导出excel文件代码,Yii1.1框架下编写,相关代码需要自行调整


    /**
     * @param string $filepath
     * @param array $titles
     * @param int $startRow
     * @return array|false
     */
    public static function importExcelData($filepath, $titles, int $startRow)
    {
        $datas = [];
        try {
            Yii::import('application.vendors.phpexcel.*');
            require_once 'PHPExcel.php';

            //读取文件
            $objReader   = PHPExcel_IOFactory::createReader('Excel2007');
            $objPHPExcel = $objReader->load($filepath);
            //读取表格数据存入$datas
            $objPHPExcel->setActiveSheetIndex(0);
            $sheet      = $objPHPExcel->getSheet(0);
            $highestRow = $sheet->getHighestDataRow();
            $letters    = range('A', 'Z');
            $columns    = array_keys($titles);
            for ($row = $startRow; $row <= $highestRow; $row++) {
                $_data = [];
                foreach ($columns as $k => $key) {
                    $_data[$key] = $sheet->getCell("{$letters[$k]}{$row}")->getValue();
                }
                $datas[] = $_data;
            }
            return $datas;
        } catch (\Exception $e) {
            return false;
        }
    }

    /**
     * 导出Excel文件
     * @param $titles
     * @param $data
     * @param $filename
     * @return void
     * @throws CException
     */
    public static function exportExcel($titles, $data, $filename)
    {

        Yii::import('application.vendors.phpexcel.*');
        require_once 'PHPExcel.php';

        $objPHPExcel = new PHPExcel();
        try {
            //生成A到AZ的列名称数组
            $cols = range('A', 'Z');
            array_push($cols, ...array_map(function ($v) {
                return "A{$v}";
            }, $cols));
            $objSheet = $objPHPExcel->getActiveSheet();
            //工作表标题
            $objSheet->setTitle("外呼结果");
            $rowIdx = 1;
            $titleArr = array_values($titles);
            //第一行内容,放列标题
            foreach ($titleArr as $k=>$title) {
                $objSheet->setCellValue($cols[$k] . $rowIdx, $title);
            }
            //设置第一行的背景颜色
            $objSheet->getStyle("A{$rowIdx}:{$cols[$k]}1")
                ->getFill()
                ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
                ->getStartColor()
                ->setRGB('E8E8E8');
            //后面行循环放内容
            foreach ($data as $row) {
                $rowIdx++;
                foreach ($titleArr as $k=>$title) {
                    //如果值长度超过阈值,则只保存为字符型单元格格式,避免长数字显示为科学计数法
                    $value = $row[$k]??'';
                    if (is_numeric($value) && mb_strlen($value, 'UTF-8') > 10) {
                        $objSheet->setCellValueExplicit($cols[$k] . $rowIdx, $value);
                    } else {
                        $objSheet->setCellValue($cols[$k] . $rowIdx, $value);
                    }
                }
            }

            // Rename worksheet
            // Set active sheet index to the first sheet, so Excel opens this as the first sheet
            $objPHPExcel->setActiveSheetIndex(0);
            // Redirect output to a client’s web browser (Excel2007)
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment;filename="' . $filename . '.xlsx"');
            header('Cache-Control: max-age=0');
            // If you're serving to IE 9, then the following may be needed
            header('Cache-Control: max-age=1');
            // If you're serving to IE over SSL, then the following may be needed
            header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
            header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
            header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
            header('Pragma: public'); // HTTP/1.0
            $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
            $objWriter->save('php://output');
        } catch (\PHPExcel_Exception $e) {
            $line = __LINE__;
            $file = __FILE__;
            zmf::fp("导出文件 {$filename} 出错:{$e->getMessage()}:({$line}){$file},args:".CJSON::encode(func_get_args()));
            Yii::app()->controller->message(200, '导出文件出错');
        }
    }

css去掉input type=“number”的上下箭头

// css去掉input type=“number”的上下箭头
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
  -webkit-appearance: none;
}
.member-form,.rpo-form input[type="number"] {
  -moz-appearance: textfield;
}