该问题来自社区帖: https://bbs.csdn.net/topics/618295904.为符合问答规范, 该问题经过ChatGPT优化
<html><head><title>UiPath做京东登录滑块验证</title></head><body>
<html><head><title>UiPath做京东登录滑块验证</title></head><body>
关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言问题描述: 请问UiPath做京东登录的滑块验证有没有什么好的方案? 回答:
//使用UiPath的OCR活动获取验证码坐标和大小
ocrText = OCR.GetText(imagePath);
//匹配验证码并获取验证码位置
Rectangle rect = image.FindText(ocrText);
//获取滑块的位置和大小
int sliderWidth = rect.Width / 2; //滑块宽度为验证码的一半
int sliderHeight = rect.Height;
int sliderLeft = rect.X + sliderWidth / 2; //滑块左边界为验证码左边界+滑块宽度的一半
int sliderTop = rect.Y;
//通过MouseMove和MouseDown等活动完成鼠标滑动
MoveMouse(sliderLeft, sliderTop, sliderWidth, sliderHeight);
MouseDown();
MoveMouse(sliderLeft + 25, sliderTop, sliderWidth, sliderHeight);
MouseUp();
(2) 图像识别 通过模板匹配或者特征值匹配等图像识别方法,识别出滑块和验证码的位置和大小,然后模拟鼠标滑动来完成验证。实现的复杂度较高,但是成功率相对比较高。 示例代码:
//使用UiPath的ImageExists活动查找验证码和滑块的位置
selector.Verbose = true;
var imageExists = uiElement.ImageExists(selector);
if (imageExists == null)
{
throw new Exception("Unable to find the image file");
}
//获取图片存在的位置和大小
var rect = imageExists.BoundingRectangle;
//获取滑块的位置和大小
int sliderWidth = rect.Width / 2; //滑块宽度为验证码的一半
int sliderHeight = rect.Height;
int sliderLeft = rect.X + sliderWidth / 2; //滑块左边界为验证码左边界+滑块宽度的一半
int sliderTop = rect.Y;
//通过MouseMove和MouseDown等活动完成鼠标滑动
MoveMouse(sliderLeft, sliderTop, sliderWidth, sliderHeight);
MouseDown();
MoveMouse(sliderLeft + 25, sliderTop, sliderWidth, sliderHeight);
MouseUp();
(3) API接口 通过调用第三方平台的API接口,获取验证码和滑块的位置和大小,然后模拟鼠标滑动来完成验证。实现的难度较低,但是需要付费或者限制调用次数。 示例代码:
var apiKey = "your_api_key";
var apiSecret = "your_api_secret";
var apiUrl = "http://api.xunma.net/";
//调用第三方平台的API获取验证码和滑块的位置和大小
var response = Http.Post(apiUrl + "api.xunma.net/getpoint", new
{
username = "your_username",
password = "your_password",
typeid = "3040",
timeout = "60",
softid = "your_softid",
softkey = "your_softkey",
image_data = "your_image_data"
});
var result = response.Content.ReadAsStringAsync().Result;
//解析API返回的数据获取滑块的位置和大小
var sliderLeft = (int)result["Result"]["X"];
var sliderTop = (int)result["Result"]["Y"];
var sliderWidth = (int)result["Result"]["Width"];
var sliderHeight = (int)result["Result"]["Height"];
//通过MouseMove和MouseDown等活动完成鼠标滑动
MoveMouse(sliderLeft, sliderTop, sliderWidth, sliderHeight);
MouseDown();
MoveMouse(sliderLeft + 25, sliderTop, sliderWidth, sliderHeight);
MouseUp();
综上所述,实现UiPath对京东滑块验证的方案,可以选择OCR识别、图像识别和API接口三种方案中的一种,根据实际情况选择方案来完成验证。其中,OCR识别的实现难度较大,但是成本低,成功率相对较低;图像识别和API接口实现难度较高,但是成功率相对较高,需要付费或者限制调用次数。