示例1-苏宁每日自动登录打卡-结合Au3
public class SuningAutoClock
{
public static void AutoClock() throws IOException, InterruptedException {
SuningAutoClock autoLoginSuning = new SuningAutoClock();
autoLoginSuning.autoKick("234234","xxxxx");
}
public void autoKick(String userName, String password) throws InterruptedException, IOException
{
System.setProperty("webdriver.chrome.driver", "C:\\my-program\\chromedriver.exe");
WebDriver dr = new ChromeDriver();
try {
dr.get("https://www.suning.com/");
//等待登录组件加载完成
(new WebDriverWait(dr, 10)).until(new ExpectedCondition<Boolean>()
{
public Boolean apply(WebDriver d)
{
return d.findElement(By.cssSelector("a[href='javascript:SFE.base.logonurl();']")).isDisplayed();
}
});
//如果有新人弹出框,先关闭
if (dr.findElement(By.cssSelector(".new-user")).isDisplayed())
{
dr.findElement(By.cssSelector("i[name='index3_homepage1_xrtk_close']")).click();
}
//点击登录按钮
dr.findElement(By.cssSelector("a[href='javascript:SFE.base.logonurl();']")).click();
//等待登录页面加载完成
(new WebDriverWait(dr, 10)).until(new ExpectedCondition<Boolean>()
{
public Boolean apply(WebDriver d)
{
return d.findElement(By.xpath("/html/body/div[2]/div/div/div[1]/a[2]")).isDisplayed();
}
});
//点击账户登录
dr.findElement(By.xpath("/html/body/div[2]/div/div/div[1]/a[2]")).click();
//输入密码和账户
dr.findElement(By.cssSelector("#userName")).sendKeys(userName);
dr.findElement(By.cssSelector("#password")).sendKeys(password);
//勾选自动登录框
//WebElement autoLogin = dr.findElement(By.cssSelector("#rememberMe"))
//如果展示滑块,则拖动滑块
WebElement temp = dr.findElement(By.cssSelector(".dt_child_content_knob"));
if( temp!=null && temp.isDisplayed() ) {
Process process = Runtime.getRuntime().exec("C:\\Users\\Administrator\\Desktop\\AU3\\苏宁登陆页面拖动验证滑块.exe");
process.waitFor();
System.out.println("操作登陆滑块完成!!");
Thread.sleep(2000);
}
//点击登录按钮
dr.findElement(By.cssSelector("#submit")).click();
//等待"我的易购"按钮加载完成
(new WebDriverWait(dr, 10)).until(new ExpectedCondition<Boolean>()
{
public Boolean apply(WebDriver d)
{
return d.findElement(By.cssSelector(".mysuning-handle span")).isDisplayed();
}
});
//等待 我的易购页加载完成
dr.findElement(By.cssSelector(".mysuning-handle span")).click();
(new WebDriverWait(dr, 10)).until(new ExpectedCondition<Boolean>()
{
public Boolean apply(WebDriver d)
{
return d.findElement(By.cssSelector(".radiu-btn")).isDisplayed();
}
});
dr.findElement(By.cssSelector(".radiu-btn")).click();
//等待打开 打卡签到页面
Thread.sleep(5000);
for (String tempHandleId : dr.getWindowHandles())
{
dr.switchTo().window(tempHandleId);
if (dr.getTitle().equals("打卡签到_苏宁会员_苏宁易购"))
{
//等待 点我打卡加载完成
new WebDriverWait(dr, 10);
//调用au3的脚本进行打卡
Runtime runtime = Runtime.getRuntime();
runtime.exec("C:\\Users\\Administrator\\Desktop\\AU3\\苏宁打卡页面自动移动到打卡按钮.exe");
System.out.println("执行结束!!!");
}
}
}catch (Exception e){
e.printStackTrace();
}
finally {
Thread.sleep(5000);
dr.quit();
}
}
}
//苏宁登陆页面拖动验证滑块.au3
#include <MsgBoxConstants.au3>
#include <AutoItConstants.au3>
Example()
Func Example()
;累列出所有窗口
Local $aList = WinList()
; Loop through the array displaying only visable windows with a title.
For $i = 1 To $aList[0][0]
;找到指定窗口
If $aList[$i][0]== "用户登录 - Google Chrome" Then
$title = $aList[$i][0];
;激活窗口到最前
WinActivate($title);
;窗口最大化
WinSetState($title,"",@SW_MAXIMIZE);
MouseMove(840,440, 100);
//按下鼠标左键
MouseDown($MOUSE_CLICK_LEFT) ;
//移动鼠标
MouseMove ( 900, 435 ,10 );
MouseMove ( 1050, 450 ,30 );
//松开左键
MouseUp($MOUSE_CLICK_LEFT);
EndIf
Next
EndFunc ;==>Example
//苏宁打卡页面自动移动到打卡按钮.au3
#include <MsgBoxConstants.au3>
#include <AutoItConstants.au3>
Example()
Func Example()
;累列出所有窗口
Local $aList = WinList()
; Loop through the array displaying only visable windows with a title.
For $i = 1 To $aList[0][0]
;找到指定窗口
If $aList[$i][0]== "打卡签到_苏宁会员_苏宁易购 - Google Chrome" Then
$title = $aList[$i][0];
;激活窗口到最前
WinActivate($title);
;窗口最大化
WinSetState($title,"",@SW_MAXIMIZE);
;移动到x-400,y-600位置打卡
MouseMove(450,420, 100);
MouseClick($MOUSE_CLICK_LEFT);
EndIf
Next
EndFunc ;==>Example
示例1-苏宁每日自动登录打卡-结合Au3的更多相关文章
- 每日自动健康打卡(Python+腾讯云服务器)
每日自动健康打卡(Python+腾讯云服务器) 1.配置需要 python3.7,Chrome或者Edeg浏览器,Chrome驱动或者Edge驱动 #需要配置selenium库,baidu-aip库, ...
- 使用token实现在有效期内APP自动登录功能
实现此功能的场景是在当下用户对手机APP体验要求高,并且相对安全前提的推动下诞生:当你下载了一个QQ,微信第一次进行了账号和密码的登录,你从此以后打开应用免去了你每日打开应用都要输入账号跟密码的痛苦过 ...
- linux expect详解(ssh自动登录)
shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh root@192.168.22.194 expect "*password:&quo ...
- Spring Security笔记:Remember Me(下次自动登录)
前一节学习了如何限制登录尝试次数,今天在这个基础上再增加一点新功能:Remember Me. 很多网站,比如博客园,在登录页面就有这个选项,勾选“下次自动登录”后,在一定时间段内,只要不清空浏览器Co ...
- [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍
前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...
- 360每日自动签到,领取积分 (java httpclient4.x)
如何登陆360,并每日自动签到这次的难点主要集中在登陆这里了,开始抓包发现360登陆验证很麻烦,但是后来发现一个简单的方法.因为我安装了360安全卫士,发现点击那个金币的按钮能直接验证登陆,哈哈~所以 ...
- 利用phantomjs模拟QQ自动登录
之前为了抓取兴趣部落里的数据,研究了下QQ自动登录. 当时搜索了一番,发现大部分方法都已经失效了,于是准备自己开搞. 第一个想到的就是参考网上已有方案的做法,梳理登陆js的实现,通过其他语言重写.考虑 ...
- 爬虫学习之基于Scrapy的爬虫自动登录
###概述 在前面两篇(爬虫学习之基于Scrapy的网络爬虫和爬虫学习之简单的网络爬虫)文章中我们通过两个实际的案例,采用不同的方式进行了内容提取.我们对网络爬虫有了一个比较初级的认识,只要发起请求获 ...
- C# 脚本代码自动登录淘宝获取用户信息
C# 脚本代码自动登录淘宝获取用户信息 最近遇到的一个需求是如何让程序自动登录淘宝, 获取用户名称等信息. 其实这个利用SS (SpiderStudio的简称) 实现起来非常简单. 十数行代码就可 ...
随机推荐
- 江苏省大学生程序设计竞赛(JSCPC)赛后感
仔细的算了一下,这是我第6次参加与acm有关的比赛了,每一次的经历,在我看来都是一次对自己能力的认识与评估,身边学计算机专业的同龄人对这项比赛的热爱,专注,勇气以及所获得的成就让要好好努力,更要加倍付 ...
- Ruby中的并行赋值和嵌套赋值
一. Ruby 的赋值实际是以并行方式执行的,所以赋值语句右边的值不受赋值语句本身的影响.在左边的任意一个变量或属性赋值之前,右边的值按他们出现的顺序被计算出来. 1.当赋值语句有多于一个左值时,赋值 ...
- 问题:C# List;结果:C#中数组、ArrayList和List三者的区别
C#中数组.ArrayList和List三者的区别 分类: [C#那些事] 2013-03-11 00:03 36533人阅读 评论(23) 收藏 举报 目录(?)[+] 在C#中数组,ArrayLi ...
- Mybaits整合Spring自动扫描 接口,Mybaits配置文件.xml文件和Dao实体类
1.转自:https://blog.csdn.net/u013802160/article/details/51815077 <?xml version="1.0" enco ...
- win7 32位安装 python 及Numpy、scipy、matplotlib函数包
操作系统: win7 64位,但选择安装32位的python. 1,python下载安装 https://www.python.org/downloads/ 下载2.7版,一路下一步安装. 并在pat ...
- 转:Linux下用Jmeter做接口测试
本地设计 首先在本地设计 Apache JMeter 测试计划,大家可以参考<接口测试之 JMeter 初探> ,这里不再重复. 服务器配置 确保服务器已经安装了JDK和Python. 在 ...
- 在linux系统个人目录下安装新版python
一.下载所需的python版本文件 在linux个人目录下 下载https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tar.xz 解压tar.xz ...
- CF1041F Ray in the tube
挂上Chester大神的解题报告 有一个思维跳跃的地方,就是不应该枚举所有的$B$点,而是应该在选定一个$A$点之后枚举距离计算. 然后我们发现枚举距离是$2^k$的长度就可以了,证明如下: 假如距离 ...
- Raising Modulo Numbers(ZOJ 2150)
这题其实就是快速求一个高次幂的模. 这是题目的答案 #include<iostream> #include<cmath> using namespace std; ]; ]; ...
- Http客户端再封装
Android系统上推荐的Http客户端从Apache变成[HttpURLConnection],主要理由包括 * 不过因为UrlConnection这组接口时间较早(Java 1.0), 接口的设计 ...