示例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的简称) 实现起来非常简单. 十数行代码就可 ...
随机推荐
- Project Server2016升级安装问题项目中心无法显示
sharepoint 2016升级后,project server 相关中心页面出现空白页面,这是是sharepoint2016一个bug,解决方案用PWA.resx内容替换PWA.en-us.res ...
- Project Server调用PSI关闭任务以进行更新锁定任务
/// <summary> /// 锁定和解锁项目任务 /// </summary> /// <param name="projectuid"> ...
- Elasticsearch之curl创建索引库
关于curl的介绍,请移步 Elasticsearch学习概念之curl 启动es,请移步 Elasticsearch的前后台运行与停止(tar包方式) Elasticsearch的前后台运行与停止( ...
- Linux中发布项目的一些命令笔记
记一下,Linux中发布项目的一些难记的命令: .安装jdk a.检测是否安装了jdk 运行java -version b.若有需要将其卸载 c.查看安装那些jdk rpm -qa | grep ja ...
- unreal3启动流程总结
一.启动代码所在工程为Launch(win32),可为所有同一codebase项目共享. 但共享方式很不智能,是通过在源文件中添加大量#if/else条件编译宏来实现,即各项目在自己的工程中添加[程序 ...
- storm定时器timer源码分析-timer.clj
storm定时器与java.util.Timer定时器比较相似.java.util.Timer定时器实际上是个线程,定时调度所拥有的TimerTasks:storm定时器也有一个线程负责调度所拥有的& ...
- 1.5 xss漏洞修复
1.XSS漏洞修复 从上面XSS实例以及之前文章的介绍我们知道XSS漏洞的起因就是没有对用户提交的数据进行严格的过滤处理.因此在思考解决XSS漏洞的时候,我们应该重点把握如何才能更好的将用户提交的数据 ...
- 【mysql远程连库】
mysql连接远程库: 服务器端: 1.登陆服务器端,进入命令行,windows cmd; 2.设置用户.密码让指定的IP访问:MySQL -u root -p 或安装的快捷方式进入:MySQL Co ...
- Android 全局错误管理
package com.wlwl.yiyuan; import java.io.File; import java.io.PrintWriter; import java.io.StringWrite ...
- The instance of entity type 'xxxx' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked.
一.问题描述 问题:The instance of entity type 'xxxx' cannot be tracked because another instance with the sam ...