java调用本地exe并实现自动登录

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;

public class ExecuteExe {

    public static void main(String[] args) {
        try {

            // 创建 Robot 对象
            Robot robot = new Robot();

            // 打开程序,替换为实际的路径
            Runtime.getRuntime().exec("cmd /c start D:\\测试exe\\XX.exe");
            Thread.sleep(5000); // 等待程序打开

            // 输入用户名
            String username = "XXX"; // 替换为实际的用户名
            type(robot, username);

            // 切换到密码输入框
            robot.keyPress(KeyEvent.VK_TAB);
            robot.keyRelease(KeyEvent.VK_TAB);

            // 输入密码
            String password = "XXX"; // 替换为实际的密码
            type(robot, password);

            // 点击确定按钮
            robot.keyPress(KeyEvent.VK_ENTER);
            robot.keyRelease(KeyEvent.VK_ENTER);

        } catch (AWTException | InterruptedException | IOException e) {
            e.printStackTrace();
        }
    }

    // 辅助方法:模拟键盘输入
    private static void type(Robot robot, String text) {


        for (char c : text.toCharArray()) {
            int keyCode = KeyEvent.getExtendedKeyCodeForChar(c);
            if (KeyEvent.CHAR_UNDEFINED == keyCode) {
                throw new RuntimeException("KeyCode not found for character '" + c + "'");
            }
            robot.keyPress(keyCode);
            robot.keyRelease(keyCode);
        }
    }
    
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是实现淘宝登录自动滑块的 Java 代码: 同样需要引入 Selenium 的 Java 库,并且需要下载 ChromeDriver 并设置其路径。需要注意的是,自动滑块功能需要使用第三方库 `selenium-webdriver-waitfor`,可以通过以下方式添加依赖: ```xml <dependency> <groupId>com.github.waitforit-project</groupId> <artifactId>selenium-webdriver-waitfor</artifactId> <version>1.4.0</version> </dependency> ``` 然后,使用下面的代码实现淘宝登录自动滑块: ```java import com.waitforit.webdriver.WaitDriver; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class TaobaoLoginWithSlider { public static void main(String[] args) { // 设置 ChromeDriver 的路径 System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver"); // 创建 ChromeDriver 对象 WebDriver driver = new ChromeDriver(); // 访问淘宝登录页面 driver.get("https://login.taobao.com/member/login.jhtml"); // 定位到用户名输入框并输入用户名 WebElement usernameInput = driver.findElement(By.id("fm-login-id")); usernameInput.sendKeys("your_username"); // 定位到密码输入框并输入密码 WebElement passwordInput = driver.findElement(By.id("fm-login-password")); passwordInput.sendKeys("your_password"); // 点击滑块按钮 WebElement sliderButton = driver.findElement(By.id("nc_1_n1z")); sliderButton.click(); // 获取滑块的位置信息 WebElement sliderElement = driver.findElement(By.id("nc_1_n1z")); int sliderWidth = sliderElement.getSize().width; System.out.println("sliderWidth: " + sliderWidth); // 创建 WaitDriver 对象 WaitDriver waitDriver = new WaitDriver(driver); // 等待滑块背景图加载完成 waitDriver.waitForElement(By.cssSelector(".nc-lang-cnt span"), 10).isDisplayed(); // 获取滑块背景图和滑块图像的 Base64 编码 String bgImage = (String) ((JavascriptExecutor) driver).executeScript("return document.getElementsByClassName('nc-lang-cnt')[0].firstElementChild.style.backgroundImage.split('\"')[1]"); String sliderImage = (String) ((JavascriptExecutor) driver).executeScript("return document.getElementsByClassName('nc-lang-cnt')[0].lastElementChild.getAttribute('src')"); // 获取滑块图像的大小信息 WebElement sliderImageElement = driver.findElement(By.cssSelector(".nc-lang-cnt img")); int sliderImageWidth = sliderImageElement.getSize().width; System.out.println("sliderImageWidth: " + sliderImageWidth); // 调用滑块解锁函数 unlockSlider(driver, sliderWidth, bgImage, sliderImage, sliderImageWidth); // 等待登录成功 waitDriver.waitForElement(By.cssSelector(".site-nav-login-info-nick"), 10).isDisplayed(); // 关闭浏览器 driver.quit(); } /** * 解锁滑块 * * @param driver WebDriver 对象 * @param sliderWidth 滑块的宽度 * @param bgImage 滑块背景图的 Base64 编码 * @param sliderImage 滑块图像的 Base64 编码 * @param sliderImageWidth 滑块图像的宽度 */ private static void unlockSlider(WebDriver driver, int sliderWidth, String bgImage, String sliderImage, int sliderImageWidth) { // 调用 JavascriptExecutor 执行滑块解锁函数 String script = "return sliding('" + bgImage + "', '" + sliderImage + "', " + sliderImageWidth + ", " + sliderWidth + ");"; ((JavascriptExecutor) driver).executeScript(script); } } ``` 需要注意的是,需要将 `/path/to/chromedriver` 替换为你本地 ChromeDriver 的路径,另外,需要将 `your_username` 和 `your_password` 替换为你的淘宝用户名和密码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值