1.引言

本试验未达期望.作为经验备忘记录.

背景有2个层面的目标:
.利用用户名,密码信息登录
.除用户名,密码外,提供与人工打开浏览器操作相似的环境,如Profile,Cookies信息,实现登录
前者对环境依赖最小化.
另外期望以headless方式运行,避免GUI系统环境要求。


淘宝登录页面为:
https://login.taobao.com/member/login.jhtml?style=mini
最后的问题出在滑块验证上.
基本认定是对淘宝UA在CAPTCHA人机识别上无法蒙混过去。


***目前尝试使用Selenium自动登录淘宝的努力失败,已没有新的思路了.之前网上不少此类资料,看来是成功的,如今的情形如果不是试验过程有什么问题,更可能是淘宝UA改变了。
 

2.环境

系统环境: Windows 8 (x64)

* firefox下载

https://download-ssl.firefox.com.cn/releases-sha2/stub/official/zh-CN/Firefox-latest.exe
版本:  61.0(64位)

默认安装.
安装目录为:%ProgramFiles%\Mozilla Firefox
Profile文件目录: $APPDATA%\Mozilla\Firefox
 

* geckodriver下载
https://github.com/mozilla/geckodriver/releases

版本:0.21.0 (win64)
解压后把geckodriver.exe复制到Firefox的安装目录.
 

* selenium-java.jar <dependency> <groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId> <version>3.12.0</version> </dependency>
 

3.页面操作试验

以百度搜索为例,试验Selenium+geckodriver操控页面的正确性.
模拟以下行为:
.打开百度页面
.输入搜索关键字
.搜索

代码如下:

 

 
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\Mozilla
Firefox\\geckodriver.exe"); String Url = "https://www.baidu.com"; WebDriver
driver =new FirefoxDriver(); driver.manage().timeouts().implicitlyWait(10,
TimeUnit.SECONDS); driver.get(Url); driver.manage().window().maximize();
WebElement txtbox = driver.findElement(By.name("wd"));
txtbox.sendKeys("HelloWorld"); driver.findElement(By.id("su")).click();
driver.close(); }
运行结果正确.

 

 

4.登录试验

 

 

代码如下:
public static void main(String[] args) { String url =
"https://login.taobao.com/member/login.jhtml?style=mini";   
System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\Mozilla
Firefox\\geckodriver.exe"); FirefoxOptions options = new FirefoxOptions();
options.setProfile(new ProfilesIni().getProfile("default")); FirefoxDriver
driver = new FirefoxDriver(options);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);    
driver.get(url);     driver.manage().window().maximize();  String username =
"whereh"; String password = "xxxx";      
driver.findElement(By.id("TPL_username_1")).clear();
driver.findElement(By.id("TPL_username_1")).sendKeys(username);
driver.findElement(By.id("TPL_password_1")).clear();
driver.findElement(By.id("TPL_password_1")).sendKeys(password);
driver.findElement(By.id("J_SubmitStatic")).click();  driver.close(); }public
static void main(String[] args) { String url =
"https://login.taobao.com/member/login.jhtml?style=mini";   
System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\Mozilla
Firefox\\geckodriver.exe"); FirefoxOptions options = new FirefoxOptions();
options.setProfile(new ProfilesIni().getProfile("default")); FirefoxDriver
driver = new FirefoxDriver(options);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);    
driver.get(url);     driver.manage().window().maximize();  String username =
"whereh"; String password = "xxxx";      
driver.findElement(By.id("TPL_username_1")).clear();
driver.findElement(By.id("TPL_username_1")).sendKeys(username);
driver.findElement(By.id("TPL_password_1")).clear();
driver.findElement(By.id("TPL_password_1")).sendKeys(password);
driver.findElement(By.id("J_SubmitStatic")).click();  driver.close(); }
在J_SubmitStatic click之前,页面内容正常(用户名称,密码),没有验证滑块.
执行click之后,页面提示"为了你的账户安全,请拖动滑块完成验证",滑块出现.

而且,在这个页面上手动拖动滑块,总是出现"哎呀,出错了,点击刷新再来一次"的错误。
在试验ChromeDriver过程中,出现的现象一样,程序控制滑块也总是在请求服务端analyze时返回错误码300,对应上面的错误提示信息。

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信