浏览器和客户端结合的erp系统,java控制浏览器操作自动登录,socket客户端通信进行表单赋值

news2024/11/29 8:37:06

java做一个toB的客户端操作系统,客户端和web的结合;

主要是使用java编写客户端代码,采用selenium控制浏览器,主要是用到selenium自动化测试的功能;

javaEE 项目调用 selenium使用谷歌控件chromedriver.exe控制浏览器打开web网页自动登录后,采用socket获取服务端接口,自动填写form表单的操作;

1、首先新建一个maven项目,不需要是springboot项目
引入selenium jar包

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

2、引入浏览器驱动
谷歌浏览器驱动下载地址
https://chromedriver.storage.googleapis.com/index.html

对应下载版本,查看谷歌版本


 下载对应版本的驱动放到项目可加载目录下片段

maven打包jar配置

<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>1.3.5.RELEASE</version>
				<configuration>
					<!-- 指定启动类 -->
					<mainClass>com.*.*.*.*.Main</mainClass>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
		<resources>
			<resource>
				<!--源文件-->
				<directory>src/main/brdriver/</directory>
				<!--指定编译到META-INF/resources-->
				<targetPath>brdriver/</targetPath>
				<!--指定源文件夹中的哪个资源要编译进行-->
				<includes>
					<include>**/*</include>
				</includes>
			</resource>
			<resource>
				<!--源文件-->
				<directory>image</directory>
				<!--指定编译到META-INF/resources-->
				<targetPath>image/</targetPath>
				<!--指定源文件夹中的哪个资源要编译进行-->
				<includes>
					<include>**/*</include>
				</includes>
			</resource>
		</resources>

	</build>

 加载谷歌浏览器驱动代码片段

import java.net.URL;
import java.net.URLDecoder;

import javax.swing.JOptionPane;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class SWBInfoImport {
	public static WebDriver driver;
	public static boolean flag = true;
	static {
		URL url = SWBInfoImport.class.getProtectionDomain().getCodeSource().getLocation();  
        String filePath = null;  
        try {  
            filePath = URLDecoder.decode(url.getPath(), "utf-8");// 转化为utf-8编码  
            filePath=filePath.substring(0,filePath.lastIndexOf("/")+1);
        } catch (Exception e) {  
            e.printStackTrace();  
        }
        System.out.println(filePath);
		System.setProperty("webdriver.chrome.driver", "./brdriver/chromedriver.exe");
		driver = new ChromeDriver();
		driver.manage().window().maximize();
	}

	public void queryIsIf() {

	}
	
}

 javax.swing启动客户端代码片段,使用java编辑一个简单的图形界面吧
 

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import com.sound.ezaisheng.erp.utils.Tips;

public class Major extends JFrame implements ActionListener {

	/**
	 * 
	 */
	private static final long serialVersionUID = -5878629686730451031L;
	
	private static final int width = 600;
	private static final int height = 300;
	private JPanel loginPanel;
	@SuppressWarnings("rawtypes")
	private JComboBox userBox;
	private JTextField userNameField;
	private JPasswordField passwordField;
	private JButton loginButton;
	private JButton exitButton;
	
	public Major(String  username) {
		
		this.setLayOut(username);
		
		this.setSize(Major.width, Major.height);
		this.setResizable(false);
		this.setUndecorated(true);
		this.setVisible(true);
		
		int width = Toolkit.getDefaultToolkit().getScreenSize().width;
		int height = Toolkit.getDefaultToolkit().getScreenSize().height;
		this.setLocation((width - Major.width) >> 1, (height - Major.height) >> 1);
		
	}
	
	@SuppressWarnings({ "serial", "rawtypes", "unchecked" })
	private void setLayOut(String  username) {
		
		loginPanel = new JPanel(){
			@Override
			public void paintComponent(Graphics g) {
				// 双缓冲
				setDoubleBuffered(true);
				Image loginImg = new ImageIcon("image/major.png").getImage();
				g.drawImage(loginImg, 0, 0, null);
			}
		};
		loginPanel.setLayout(null);
		
		
		/*userNameField = new JTextField();
		userNameField.setBounds(150, 148, 260, 70);
		userNameField.setText("您好:"+username);
		userNameField.setBackground(new Color(34, 41, 56));
		userNameField.setFont(new Font("宋体", Font.PLAIN, 30) );
		loginPanel.add(userNameField);*/
		
		

		exitButton = new JButton("退出");
		exitButton.setBounds(445, 242, 100, 32);
		exitButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Tips.getTips().setLayOut("您真的要退出系统吗?", true);
			}
		});
		loginPanel.add(exitButton);
		
		this.setContentPane(loginPanel);
		
	}
	
	/** 
	 * 登录按钮监听事件
	 */
	public void actionPerformed(ActionEvent e) {}
	
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2206227.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小米员工薪资一览表

小米 之前我们写了 京东 和 华为OD&#xff0c;不少同学在后台点名要看小米的职级和薪资。 没问题&#xff0c;在了解小米的薪资分布前&#xff0c;我们要先对小米职级有个初步概念。 小米职级从 13 到 22&#xff0c;共 10 级。 title 大致分为 专员&#xff08;13~15级&#…

go语言中的template使用

在 Go 语言中&#xff0c;你可以使用 text/template 或 html/template 包来创建和执行模板。以下是一个基本示例&#xff0c;展示如何使用 Go 的模板语法&#xff1a; 1. 导入包 import ("os""text/template" )2. 创建数据结构 定义一个数据结构&#x…

反向指标KDJ?只要做个简单的魔改,就能一直在新高路上!

KDJ又叫随机指标&#xff0c;是一个适用于短线的技术指标&#xff0c;在股票、期货等市场受到广泛使用。在老Q看来&#xff0c;这是一个很有趣的指标。但是如果你按照经典用法来使用的话&#xff0c;它就变成财富毁灭机了&#xff01; 下边&#xff0c;老Q就一步步从统计原理、…

【阿里云中的大数据组件】技术选型和数仓系统流程设计 --- 阿里云的组件简介

文章目录 一、DataHub二、DataWorks 和 MaxCompute三、RDS四、技术选型和对比1、阿里云技术跟之前的技术对比2、技术选型 五、系统流程设计 一、DataHub 通俗来说这个 DataHub 类似于传统大数据解决方案中 Kafka 的角色&#xff0c;提供了一个数据队列功能 对于离线计算&#x…

ES 全文检索完全匹配高亮查询

我们ES会将数据文字进行拆词操作&#xff0c;并将拆解之后的数据保存到倒排索引当中几十使用文字的一部分也能查询到数据&#xff0c;这种检索方式我们就称之为全文检索&#xff0c;ES的查询结果也会倒排索引中去查询匹配 下面的查询结果中输入的词&#xff0c;就是输入小也可…

PDF文件怎么添加水印?这里有6个方法

PDF文件怎么添加水印&#xff1f;在职场中&#xff0c;随着信息数字化的普及&#xff0c;PDF文件已成为我们日常工作中不可或缺的一部分。然而&#xff0c;如何在这些文件中确保信息的安全性和版权保护&#xff0c;成为了许多企业面临的重要课题。其中&#xff0c;给PDF文件添加…

Android常用组件

目录 1. TextView 控件 常用属性: 1&#xff09;android:text: 2&#xff09;android:gravity: 3&#xff09;android:textSize: 4&#xff09;android:textColor: 5&#xff09;android:background: 6&#xff09;android:padding: 7&#xff09;android:layout_width 和 andr…

Web集群服务-Nginx

1. web服务 1. WEB服务:网站服务,部署并启动了这个服务,你就可以搭建一个网站 2. WEB中间件: 等同于WEB服务 3. 中间件:范围更加广泛,指的负载均衡之后的服务 4. 数据库中间件:数据库缓存,消息对列 2. 极速上手指南 nginx官网: nginx documentation 2.1 配置yum源 vim /etc/…

spock 并行执行单元测试

继上一篇 使用 mvnd之后 发现 deploy 公共库还是需要十分钟左右、后面发现跳过所有单元测试之后、deploy 只需要 4 分钟。 所以想着从提升单元测试的速度来加快 deploy 。 前前后后最终还是按官方的配置并行执行单元测试 链接1 链接2 看了下打印的日志、依赖的是默认的 Fork…

python环境的配置

VScode的安装 https://code.visualstudio.com/download python环境利用anaconda进行安装 https://www.anaconda.com/download/ 点击第三个 conda create -n python python3.8 #建立环境activate python #激活环境路径示例&#xff1a; D:\Anaconda3\envs 打开vscode 配置…

Java学习第九天

相同包下的类可以直接访问&#xff0c;不同包下的类需要导包才可以使用&#xff0c;导包格式&#xff1a;import 包名.类名 final关键字&#xff1a; 常量&#xff1a; 枚举&#xff1a;一种特殊的类型(反编译之后本质就是实例常量&#xff0c;自己定义的类&#xff0c;创建了几…

aws(学习笔记第五课) AWS的firewall SecurityGroup,代理转发技术

aws(学习笔记第五课) AWS的firewall– SecurityGroup&#xff0c;代理转发技术 学习内容&#xff1a; AWS的firewall– SecurityGroup代理转发技术 1. AWS的filewall– SecurityGroup 控制进入虚拟服务器的网络流量 通常的firewall(防火墙)配置 AWS上使用安全组进行网络流量…

linux安装Go ImageMagick插件

ImageMagick安装 在程序中需要对图片转化时需要使用到gopkg.in/gographics/imagick.v2/imagick库&#xff0c;但是这个库需要在本地安装ImageMagick插件。 有些机器在软件库是有的&#xff0c;可以直接下载安装&#xff0c;没有的话推荐源码安装。 ImageMagick中文站 ImageM…

使离医院最远的村庄到医院的路程最短

给定n个村庄之间的交通图&#xff0c;若村庄i和j之间有道路&#xff0c;则将顶点i和j用边连接&#xff0c;边上的Wij表示这条道路的长度&#xff0c;现在要从这n个村庄中选择一个村庄建一所医院&#xff0c;问这所医院应建在哪个村庄&#xff0c;才能使离医院最远的村庄到医院的…

大数据处理从零开始————9.MapReduce编程实践之信息过滤之学生成绩统计demo

1.项目目标 1.1 需求概述 现在我们要统计某学校学生的成绩信息&#xff0c;筛选出成绩在60分及以上的学生。 1.2 业务分析 如果我们想实现该需求&#xff0c;可以通过编写一个MapReduce程序&#xff0c;来处理包含学生信息的文本文件&#xff0c;每行包含【学生的姓名&#x…

《深度学习》【项目】OpenCV 答题卡识别 项目流程详解

目录 一、上半部分 1、定义展示图像函数 2、预处理 运行结果&#xff1a; 3、轮廓检测并绘制 运行结果&#xff1a; 4、排序轮廓 5、定义排序点函数 6、透视变换 1&#xff09;定义透视变换处理函数 2&#xff09;执行透视变换 运行结果&#xff1a; 7、二值化处理…

python 边际分布图

import seaborn as snspenguins sns.load_dataset("penguins") colors {"Gentoo": #AE5259, "Adelie": #CF992C, "Chinstrap": #6B9DAA}# 分类散点图 sns.jointplot(datapenguins, x"bill_length_mm", y"bill_depth_…

Linux的kafka安装部署

1.kafka是一个分布式的,去中心化的,高吞吐低延迟,订阅模式的消息队列系统 确保要有jdk与zookeeper安装配置 2.下载kafka安装包 http://archive.apache.org/dist/kafka/2.4.1/kafka_2.12-2.4.1.tgz 此时可以wget http://archive.apache.org/dist/kafka/2.4.1/kafka_2.12-2.4.…

数字后端零基础入门系列 | Innovus零基础LAB学习Day1

一 Floorplan 数字IC后端设计如何从零基础快速入门&#xff1f;(内附数字IC后端学习视频&#xff09; Lab5-1这个lab学习目标很明确——启动Innovus工具并完成设计的导入。 在进入lab之前&#xff0c;我们需要进入我们的FPR工作目录。 其中ic062为个人服务器账户。比如你端…

Graph Contrastive Learningwith Reinforcement Augmentation

IJCAI24 推荐指数&#xff1a; #paper/⭐⭐⭐ 领域&#xff1a;图增强强化学习 胡言乱语&#xff1a; 不愧是清华组的论文&#xff0c;这个实验的目的是利用强化学习去生成对比学习的增强视图。但是&#xff0c;其仍然有一些小问题&#xff1a;其本质实际是对以往的图增强方法…