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的更多相关文章

  1. 每日自动健康打卡(Python+腾讯云服务器)

    每日自动健康打卡(Python+腾讯云服务器) 1.配置需要 python3.7,Chrome或者Edeg浏览器,Chrome驱动或者Edge驱动 #需要配置selenium库,baidu-aip库, ...

  2. 使用token实现在有效期内APP自动登录功能

    实现此功能的场景是在当下用户对手机APP体验要求高,并且相对安全前提的推动下诞生:当你下载了一个QQ,微信第一次进行了账号和密码的登录,你从此以后打开应用免去了你每日打开应用都要输入账号跟密码的痛苦过 ...

  3. linux expect详解(ssh自动登录)

    shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh root@192.168.22.194 expect "*password:&quo ...

  4. Spring Security笔记:Remember Me(下次自动登录)

    前一节学习了如何限制登录尝试次数,今天在这个基础上再增加一点新功能:Remember Me. 很多网站,比如博客园,在登录页面就有这个选项,勾选“下次自动登录”后,在一定时间段内,只要不清空浏览器Co ...

  5. [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

    前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...

  6. 360每日自动签到,领取积分 (java httpclient4.x)

    如何登陆360,并每日自动签到这次的难点主要集中在登陆这里了,开始抓包发现360登陆验证很麻烦,但是后来发现一个简单的方法.因为我安装了360安全卫士,发现点击那个金币的按钮能直接验证登陆,哈哈~所以 ...

  7. 利用phantomjs模拟QQ自动登录

    之前为了抓取兴趣部落里的数据,研究了下QQ自动登录. 当时搜索了一番,发现大部分方法都已经失效了,于是准备自己开搞. 第一个想到的就是参考网上已有方案的做法,梳理登陆js的实现,通过其他语言重写.考虑 ...

  8. 爬虫学习之基于Scrapy的爬虫自动登录

    ###概述 在前面两篇(爬虫学习之基于Scrapy的网络爬虫和爬虫学习之简单的网络爬虫)文章中我们通过两个实际的案例,采用不同的方式进行了内容提取.我们对网络爬虫有了一个比较初级的认识,只要发起请求获 ...

  9. C# 脚本代码自动登录淘宝获取用户信息

    C# 脚本代码自动登录淘宝获取用户信息   最近遇到的一个需求是如何让程序自动登录淘宝, 获取用户名称等信息. 其实这个利用SS (SpiderStudio的简称) 实现起来非常简单. 十数行代码就可 ...

随机推荐

  1. IDEA 热部署 + 下载jar包放到maven中

    IDEA 热部署: 1 :  POM中加入devtools的依赖,就可以实现热部署 <dependency> <groupId>org.springframework.boot ...

  2. uboot 命令使用教程(uboot参数设置)

    1. Printenv 打印环境变量. uboot> printenv baudrate=115200 ipaddr=192.168.0.111 ethaddr=32:34:46:78:9A:D ...

  3. 排序----demo----

    排序1---冒泡法: 单向冒泡排序的基本原理就是:对于给定的n个数据,从第一个数据开始一次对相邻的两个数据进行比较,当前面的数据大于后面的数据时,交换位置,进行一轮比较和换位后,n个数据中最大的那个被 ...

  4. project online get approvals task data 获取审批待办任务接口

    调用接口地址:重要 http://xxxx/sites/pwa/_vti_bin/PSI/ProjectServer.svc Header 三个必要参数: 其中SOAPAction写死就行,如果是on ...

  5. linux命令-vim一般模式下光标移动

    vim 有一般模式,编辑模式,命令模式 ///////一般模式可以光标移动,复制,剪切,粘贴     编辑模式可以输入想输入的字符       命令模式刚才用到了set nu //////////// ...

  6. HTTP返回码中301与302的区别

    一.官方说法 301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于: 301 redirect: 301 代表永久性转移(Permanently Moved). 302 ...

  7. console (控制台)

    console 模块提供了一个简单的调试控制台,类似于 Web 浏览器提供的 JavaScript 控制台. 该模块导出了两个特定的组件: 一个 Console 类,包含 console.log()  ...

  8. hadoop-2.3.0-cdh5.1.0完全分布式集群配置HA配置

    一.安装前准备: 操作系统:CentOS 6.5 64位操作系统 环境:jdk1.7.0_45以上,本次采用jdk-7u55-linux-x64.tar.gz master01 10.10.2.57  ...

  9. 通俗地讲,Netty 能做什么?

    https://www.zhihu.com/question/24322387/answer/78947405 作者:郭无心链接:https://www.zhihu.com/question/2432 ...

  10. 为什么ps中CPU占用率会有超出%100的现象?

    前面的关于ps中的%CPU的含义一文已经介绍了CPU占用率的含义,那么为什么有时会在ps的输出中看到CPU占用率超出%100的现象呢?我们知道在/proc目录下每个进程都会有一个以它的PID以名字的目 ...