1、环境准备

selenium 的本质是模拟用户点击浏览器的,所以要具备以下条件
1、gui桌面环境
2、安装谷歌浏览器或者火狐浏览器,或者其他的。windows系统也支持ie和edge
3、下载 webdriver,浏览器对应的webdriver不同,将下载的webdriver放到 PATH
下载地址
https://www.selenium.dev/documentation/en/webdriver/driver_requirements/#quick-reference

2、创建工程,添加依赖

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>

3、 实现

    @Scheduled(cron = "0 30 6 * * ?")
    public void report(){

        Properties properties = new Properties();
        try {
            properties.load(new ClassPathResource("accounts.properties").getInputStream());
            properties.entrySet().stream().forEach(objectObjectEntry -> {
                logger.debug("开始自动打卡::{}", objectObjectEntry.getKey());
                String value = (String) objectObjectEntry.getValue();
                String[] acc = value.split(",");
                doReport(acc[0],acc[1]);
            });
        } catch (IOException e) {
            e.printStackTrace();
        }


    }
WebDriver driver = new FirefoxDriver();


        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10).getSeconds());
        try {

            logger.debug("开始登陆");
            driver.get("你要测试的网站地址");
            driver.findElement(By.xpath("//*[@id=\"app\"]/div/div/div[1]/input")).sendKeys(id);
            driver.findElement(By.xpath("//*[@id=\"app\"]/div/div/div[2]/input")).sendKeys(pass);
            driver.findElement(By.xpath("//*[@id=\"app\"]/div/div/div[3]")).click();
            WebElement daka = wait.until(presenceOfElementLocated(By.xpath("//*[@id=\"app\"]/div/div[2]/div/div[2]/div[1]/div[2]/div[3]/ul/li[1]/div")));
            logger.debug("登陆成功");
            // TODO 查看面板是否有公告,读公告


            // 填报温度,提交
            logger.debug("开始点击每日打卡");
            daka.click();
            WebElement tem = wait.until(presenceOfElementLocated(By.xpath("//*[@id=\"app\"]/div/div[2]/div[5]/div[2]/span/div/input")));
            logger.debug("进入每日打卡填报页面");
            tem.clear();
            // 生成随机温度
            String temperature = new java.text.DecimalFormat("#.0").format(36d + (Math.random() * 0.7d + 0.1d));
            logger.debug("生成随机温度:: {}",temperature);
            tem.sendKeys(temperature);
            logger.debug("提交上报");
            driver.findElement(By.xpath("//*[@id=\"app\"]/div/div[3]/div")).click();

            // 提交后进入面板页面
            daka = wait.until(presenceOfElementLocated(By.xpath("//*[@id=\"app\"]/div/div[2]/div/div[2]/div[1]/div[2]/div[3]/ul/li[1]/div")));
            logger.debug("提交上报成功");

        } finally {
            driver.quit();
        }



自动化测试      自动化测试

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!