今天老公要抢阿里云的免费套餐,但是到了快十点了去抢,根本抢不到。最近我也在看selenuim自动化测试的视频,于是就试试用selenuim写个脚本,让程序自己去点领取按钮。说做就做,开始下软件搞环境,却不是一帆风顺,还好有老公这个高手指导,算是完成了一个简单的脚本,运行下来,其实并不比手快,明天凑合试试,循环它100次。在这先把遇到的问题回忆一下:
1、版本问题:
我下的火狐最早是55版本的,因为下了selenuim Ide,根本不能运行,上网查资料,最后说是47版本之后,IDE都运行不去来,我就下了47版本,并且不让它自动更新。IDE可算能用了。IDE的版本是:selenium_ide-2.9.1-fx
下了一个selenuim的jar包,竟然也不能用,报错:找不到火狐的路径。最后下了3.3.1版本的jar包,总算能找到路径了,但是还是调不起来浏览器,网上查询,说是四十几版本以后要下载一个驱动,geckodriver-v0.15.0-win32.exe,就是这个玩意,放在C:\Program Files\Mozilla Firefox\下面,代码要这么写:System.setProperty("webdriver.firefox.marionette","C:\\Program Files\\Mozilla Firefox\\geckodriver.exe");
driver=new FirefoxDriver();
这下总算调起来浏览器了。
2、登录的输入框,用IDE识别不了,看视频上老师讲的这应该是界面里面嵌的ifrme,需要先switchTo到这个frame,然后再通过F12识别里面的输入框。这个frame的id是什么,我一直搞不懂,还好我老公在这帮我找到了,还是通过F12定位的。同样,里面的输入框也是这么定位到的。
3、关于页面跳转。因为我们要找的页面需要跳转很多次才能找到,所以老公提议:我们登录界面之后,直接输入目标界面的网址,让页面跳转到我们需要的那个页面,同时session还在。于是我就这么做了,事实上确实达到了我们的目的。
4、点击了 开抢 的按钮之后,弹出一个对话框,然后按 确定 按钮,我之前看老师讲的,认为这是一个alert对话框,就按照alert处理,结果异常显示页面上没有alert对话框。看了代码,发现这也是个超链接。按照超链接处理之后,代码就完成了。
现在把代码贴出来,做个记录:
package com.aliyun.basic;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.WebDriver;
public class ALiYun {
private WebDriver driver;
public static void main(String args[]){
ALiYun alyTest = new ALiYun();
try {
alyTest.init();
alyTest.testALiYun();
alyTest.tearDown();
} catch (Exception e) {
e.printStackTrace();
}
}
public void init() throws Exception {
System.setProperty("webdriver.firefox.marionette","C:\\Program Files\\Mozilla Firefox\\geckodriver.exe");
driver=new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("https://free.aliyun.com/");
driver.manage().window().maximize();
}
public void testALiYun() throws Exception {
driver.findElement(By.linkText("登录")).click();
driver.switchTo().frame("alibaba-login-box");
driver.findElement(By.id("fm-login-id")).clear();
driver.findElement(By.id("fm-login-id")).sendKeys("1××××××××××");
driver.findElement(By.id("fm-login-password")).clear();
driver.findElement(By.id("fm-login-password")).sendKeys("××××××××××××××");
driver.findElement(By.id("fm-login-submit")).click();
Thread.sleep(5000);
driver.get("https://free.aliyun.com/ntms/free/experience/getTrial.html?spm=5176.7973419.726407.45.60377efktwIif");
int i;
for(i=0;i<5;i++){
driver.findElement(By.linkText("立即领取(10:00 开抢)")).click();
driver.findElement(By.linkText("确定")).click();
}
}
public void tearDown() throws Exception{
driver.close();
}
}