直接上源码

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.minhw</groupId><artifactId>iminhw-xinsahngmeng-qtp</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>19</maven.compiler.source><maven.compiler.target>19</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.7.0</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.2</version></dependency></dependencies></project>
ExcelUtils.java
package com.minhw.utils;import io.netty.util.internal.StringUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;/*** @author* @date 2022/12/3 22:13* @Description: TODO*/
public class ExcelUtils {public static Map<String, String> readExcel(String path) {
//        订购的数据sheet位于excel的那个位置,从0开始int sheetIndex = 2;Map<String, String> map = new HashMap<>();try {// 获取文件输入流InputStream inputStream = new FileInputStream(path);// 定义一个org.apache.poi.ss.usermodel.Workbook的变量Workbook workbook = null;// 截取路径名 . 后面的后缀名,判断是xls还是xlsx。 魔法值!!!if (path.substring(path.lastIndexOf(".") + 1).equals("xls")) {workbook = new HSSFWorkbook(inputStream);} else if (path.substring(path.lastIndexOf(".") + 1).equals("xlsx")) {workbook = new XSSFWorkbook(inputStream);}Sheet sheet = workbook.getSheetAt(sheetIndex);// sheet.getPhysicalNumberOfRows()获取总的行数// 循环读取每一行for (int i = 0; i < sheet.getPhysicalNumberOfRows(); i++) {// 循环读取每一个格Row row = sheet.getRow(i);//第二个框为中文名称Cell name = row.getCell(1);name.setCellType(CellType.STRING);//最后一个值为订单数据,如果为空则不处理。请将你的档位订购量放在最后一行/** 如:*  0198  云烟(软大重九) 1000   3   2   2*  1101    中华(硬)       450     1   1   1   1   1*  保留 "品牌编码 品牌名称 档位订货量", 档位订货量放最后一个位置,档位订货量为空则不处理*  如品牌编码0198是当前档位无需订购的量,程序不会处理*  !!无需保留标题拦,只需要保留数据即可*/Cell value = row.getCell(row.getPhysicalNumberOfCells() - 1);value.setCellType(CellType.STRING);if (!StringUtil.isNullOrEmpty(value.getStringCellValue())) {map.put(name.getStringCellValue().trim(), value.getStringCellValue());}}} catch (Exception e) {e.printStackTrace();}return map;}
}
ExcelTest
import com.minhw.utils.ExcelUtils;
import org.junit.Test;import java.util.Map;/*** @Author* @DateTime 2022/12/30 11:54 星期五* @Description: TODO*/
public class ExcelTest {/*** excel文件的路径*/String path = "/Users/minhongwei/Desktop/2023第二期公示.xlsx";@Testpublic void getExcel() {Map<String, String> excel = ExcelUtils.readExcel(path);for (Map.Entry<String, String> entry : excel.entrySet()) {System.out.println(entry.getKey() + " : " + entry.getValue());}}
}
XinshangmengTest 这个文件是最主要的文件,订货也在这里面
// Generated by Selenium IDEimport com.minhw.utils.ExcelUtils;
import org.junit.After;
import org.junit.Test;
import org.junit.Before;import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.JavascriptExecutor;import java.time.Duration;
import java.util.*;public class XinshangmengTest {private WebDriver driver;private Map<String, Object> vars;//    private Map<String, String> excel;/*** excel文件的路径*/String path = "/Users/minhongwei/Desktop/2023第二期公示.xlsx";/*** 新商盟登录用户名和密码。请自行修改*/String username = "你的用户名";String password = "你的密码";JavascriptExecutor js;@Beforepublic void setUp() {
//        excel = ExcelUtils.readExcel();driver = new ChromeDriver();js = (JavascriptExecutor) driver;vars = new HashMap<String, Object>();}@Afterpublic void tearDown() {driver.quit();}@Testpublic void xinshangmeng() throws InterruptedException {Map<String, String> excel = ExcelUtils.readExcel(path);driver.get("http://www.xinshangmeng.com/");driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));driver.findElement(By.id("username")).click();driver.findElement(By.id("username")).sendKeys(username);driver.findElement(By.id("mcmm1")).click();driver.findElement(By.id("mcmm1")).sendKeys(password);driver.findElement(By.id("btn-login")).click();driver.findElement(By.linkText("关闭")).click();driver.findElement(By.linkText("卷烟订货")).click();//        By search = By.id("cgtIdNameSearch");
//        driver.findElement(search).click();
//        driver.findElement(search).sendKeys("0143");
//        driver.findElement(By.id("confirmm")).click();
//        System.out.printf(driver.findElement(By.cssSelector("#newul > li:nth-child(1)")).toString());
//        List<WebElement> elementList = driver.findElements(By.cssSelector("#newul li"));WebElement futureElement = driver.findElement(By.id("newul"));List<WebElement> elementList = futureElement.findElements(By.tagName("li"));//By.id("newul"));System.out.println("获取到可选订单列表数量:" + elementList.size());for (WebElement e : elementList) {Thread.sleep(1000);System.out.println(e.getAttribute("title"));String title = e.getAttribute("title").trim();if (excel.get(title) != null) {System.out.println(e.getAttribute("data-cgt-code"));String req_id = "req_qty_" + e.getAttribute("data-cgt-code").trim();System.err.println("成功订购香烟,名:" + title + ", 订单数量: " + excel.get(title) + "。剩于定烟品种" + excel.size());By search = By.id("cgtIdNameSearch");driver.findElement(search).click();driver.findElement(search).sendKeys(title);driver.findElement(By.id("confirmm")).click();Thread.sleep(1000);driver.findElement(By.id(req_id)).click();Thread.sleep(1000);
//                driver.findElement(By.id(req_id)).clear();
//                Thread.sleep(1000);driver.findElement(By.id(req_id)).sendKeys(excel.get(title));
//                操作 完成删除对应值excel.remove(title);driver.findElement(search).clear();}
//            如果对应的值空了,说明订货完成,直接推出循环if (excel.size() < 1) {break;}}Thread.sleep(1000);driver.findElement(By.id("accinfo")).click();
//        将得到的余额打印到控制台System.err.println("余额:" + driver.findElement(By.cssSelector("#accerror > span")).getText());Thread.sleep(1000);driver.findElement(By.id("smt")).click();Thread.sleep(1000);driver.findElement(By.id("subbtn")).click();Thread.sleep(3000);System.err.println("提交结果" + driver.findElement(By.xpath("//*[@id=\"content\"]/div[2]/div[1]/div[1]/p")).getText());}
}

新商盟Java自动定烟脚本,懒人工具相关推荐

  1. 新商盟订烟自动获取可订烟数量及自动填充数量

    为什么80%的码农都做不了架构师?>>>    用chrome浏览器: 用户登陆新商盟后输入地址:http://gz.xinshangmeng.com/ecweb/order/cgt ...

  2. 知音微服务平台网上订烟_新商盟网上订烟登录工具

    新商盟是一个网上订烟平台,在新商盟,拥有各种各样的烟草,并且新商盟提供卷烟订购.订单查询.客户服务等功能,现腾牛网提供新商盟网上订烟系统电脑版,需要的朋友欢迎下载使用. 新商盟网上订烟系统电脑版简介: ...

  3. 中烟新商盟杨大勇:助力发展小店经济

    近段时间,由于国内疫情的反复回弹,不少行业都遇到了寒潮期,不少商家都纷纷面临倒闭的危机.而在烟草行业里,在疫情的影响下,同样也受到了打击.对此,中烟新商盟杨大勇也积极采取相关措施帮助公司平稳直上.面对 ...

  4. 某新商盟登录,js逆向:★★

    前言 可以关注我哟,一起学习,主页有更多练习例子 如果哪个练习我没有写清楚,可以留言我会补充 如果有加密的网站可以留言发给我,一起学习共享学习路程 4.如侵权,联系我,删 勉强给个两星 网址信息 网址 ...

  5. 淘宝618列车喵币自动做任务app 懒人一键安装包

    淘宝618列车喵币自动做任务app 懒人一键安装包 基于有些朋友可能不会用Auto.js软件,所以有打包好的软件供大家使用 功能 : 1.自动打开淘宝活动页面 2.自动完成签到 3.自动完成15s浏览 ...

  6. 一键dd重装linux,一键Linux系统重装脚本 – 懒人版,自定义DD,智能判断网络

    支持重装的系统: Debian 9/10 Ubuntu 18.04/16.04 CentOS 6/7 自定义DD镜像 特性/优化: 自动获取IP地址.网关.子网掩码 自动判断网络环境,选择国内/外镜像 ...

  7. 重庆新地标佛罗伦萨小镇将开业;雅高宣布2021年开业新酒店计划;阅文集团出售懒人听书股权​ | 美通企业周刊...

    一周企业资讯看点:阅文集团出售懒人听书股权,联发科发布全新旗舰5G芯片.上汽与阿里巴巴联合打造智己汽车.玛氏箭牌与阿里巴巴合作同城零售,eBay在大中华区推出管理支付服务,重庆新地标佛罗伦萨小镇即将开 ...

  8. 最新中烟新商盟JS逆向分析实战教程

    目标网址:https://xinshangmeng.com/ 重要说明:文章教程仅供参考学习,请勿用于非法用途,否则后果自负. 目录 一.接口参数分析 二.全局搜索j_mcmm关键词</

  9. 微信订烟服务器异常,大圣教程-,新商盟怎么在微信上订烟新商盟微信订烟教程,9Zu3sEGc50vN...

    5.检查swap是否正确:/sbin/swapon -s 以上就是如何在荔枝fm中测试声音的全部内容了,大家都学会了吗? 技能2:气守式/虎跃势 dd if=/dev/zero of=swapfile ...

最新文章

  1. bootstrap 两个轮播图冲突_Bootstrap的轮播图样式
  2. 【数据结构】判断一个单链表中各结点的值是否有序
  3. 前端电脑和浏览器分辨率不同_不同岗位的程序员如何选电脑 :)
  4. UVA10870递推关系(矩阵乘法)
  5. Matlab函数bwmorph
  6. sql如何获取全部的索引名称_这句简单的sql,如何加索引?颠覆了我多年的认知...
  7. 直击!10万阿里小二的复工生活
  8. 删除git所有历史记录 仅保留当前文件
  9. 请假案例_师生沟通案例8|谢谢你,“请假大王”!
  10. Mysql 分组聚合实现 over partition by 功能
  11. 4*4*4光立方制作分享
  12. SM2258XT错误代码及中文翻译
  13. EndNote常见问题:更改DOI号为超链接/用URL代替DOI号等
  14. QtAndroid详解(6):集成信鸽推送
  15. 流文件和媒体文件的不一样( flv和mp4,avi的区别)
  16. 一个懦夫,是没有人愿意同情的。
  17. 海康威视摄像头用yolo检测行人的一些问题
  18. 36篇精品文章搞定所有TOEIC单词
  19. Java 核心技术卷 II(第 8 版) – 读书笔记 – 第 1 章(下)
  20. 数据分析师python面试题_数据分析师面试题

热门文章

  1. 移动端ios使用fixed定位,偶现元素不显示问题(百度浏览器)
  2. 哪些指令会影响标志位?
  3. minicom指令_linux minicom 自动化对串口下命令
  4. dimension reduction、 feature disentangle
  5. 利用c++实现单纯形表算法
  6. 究极pytorch环境搭建
  7. 测试用例(边界值法)
  8. 运维人员的军刀——ROS
  9. android——做一个电影播放的Demo
  10. How input events are dispatched in Android?