采用selenium web自动化框架模拟登录淘宝
语言:java
环境:下载chrome驱动:
chromedriver.exe
下载chrome浏览器
其他驱动和浏览器也支持
jar包要求:
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-api</artifactId> <version>3.14.0</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-chrome-driver</artifactId> <version>3.14.0</version> </dependency>
代码如下:
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
String userName="";
String passWord="";
String startUrl = "https://login.taobao.com/member/login.jhtml";
//此处填写驱动程序,前面是驱动名随浏览器改变,后面是你对应驱动程序的文件位置,我是绝对路径写法
System.setProperty(
"webdriver.chrome.driver",
"/usr/bin/chromedriver");
WebDriver driver = new ChromeDriver();
//此处填写需要打开的网址,这是淘宝的登录网址
driver.get(startUrl);
//通过选择器获取元素
WebElement usernameElement = driver.findElement(By.id("fm-login-id"));
// 模拟用户点击用户名输入框
usernameElement.click();
// 设置sleep,方便观察
Random rand = new Random();
try {
for (int i = 0; i < userName.length(); i++) {
// 随机睡眠0-1秒
Thread.sleep(rand.nextInt(1000));
// 逐个输入单个字符
usernameElement.sendKeys("" + userName.charAt(i));
}
WebElement passwordElement = driver.findElement(By.id("fm-login-password"));
passwordElement.click();
// 输入完成用户名后,随机睡眠0-3秒
Thread.sleep(rand.nextInt(3000));
for (int i = 0; i < passWord.length(); i++) {
Thread.sleep(rand.nextInt(1000));
passwordElement.sendKeys("" + passWord.charAt(i));
}
/* //滑块处理逻辑
Actions action = new Actions(driver);
WebElement moveButton = driver.findElement(By.id("nc_1_n1z"));
// 移到滑块元素并悬停,不能超出框的长度,否则异常
action.clickAndHold(moveButton);
action.moveByOffset(258, 0).perform();*/
//回车代表点击登录
passwordElement.sendKeys(Keys.ENTER);
Thread.sleep(3000);
driver.switchTo();
StringBuffer tmpcookies = new StringBuffer();
if (!driver.getCurrentUrl().equalsIgnoreCase(startUrl)) {
Set<Cookie> cookies = driver.manage().getCookies();
for (Cookie c : cookies) {
tmpcookies.append(c.toString() + ";");
}
}
driver.quit();