今天老公要搶阿里云的免費(fèi)套餐售碳,但是到了快十點(diǎn)了去搶,根本搶不到绞呈。最近我也在看selenuim自動(dòng)化測(cè)試的視頻贸人,于是就試試用selenuim寫個(gè)腳本,讓程序自己去點(diǎn)領(lǐng)取按鈕佃声。說(shuō)做就做灸姊,開始下軟件搞環(huán)境,卻不是一帆風(fēng)順秉溉,還好有老公這個(gè)高手指導(dǎo)力惯,算是完成了一個(gè)簡(jiǎn)單的腳本,運(yùn)行下來(lái)召嘶,其實(shí)并不比手快父晶,明天湊合試試,循環(huán)它100次弄跌。在這先把遇到的問(wèn)題回憶一下:
1加叁、版本問(wèn)題:
我下的火狐最早是55版本的缝裁,因?yàn)橄铝藄elenuim Ide跌造,根本不能運(yùn)行定罢,上網(wǎng)查資料,最后說(shuō)是47版本之后淳玩,IDE都運(yùn)行不去來(lái)直撤,我就下了47版本,并且不讓它自動(dòng)更新蜕着。IDE可算能用了谋竖。IDE的版本是:selenium_ide-2.9.1-fx
下了一個(gè)selenuim的jar包红柱,竟然也不能用,報(bào)錯(cuò):找不到火狐的路徑蓖乘。最后下了3.3.1版本的jar包锤悄,總算能找到路徑了,但是還是調(diào)不起來(lái)瀏覽器嘉抒,網(wǎng)上查詢零聚,說(shuō)是四十幾版本以后要下載一個(gè)驅(qū)動(dòng),geckodriver-v0.15.0-win32.exe些侍,就是這個(gè)玩意握牧,放在C:\Program Files\Mozilla Firefox\下面,代碼要這么寫:System.setProperty("webdriver.firefox.marionette","C:\\Program Files\\Mozilla Firefox\\geckodriver.exe");
driver=new FirefoxDriver();
這下總算調(diào)起來(lái)瀏覽器了娩梨。
2、登錄的輸入框览徒,用IDE識(shí)別不了狈定,看視頻上老師講的這應(yīng)該是界面里面嵌的ifrme,需要先switchTo到這個(gè)frame习蓬,然后再通過(guò)F12識(shí)別里面的輸入框纽什。這個(gè)frame的id是什么,我一直搞不懂躲叼,還好我老公在這幫我找到了芦缰,還是通過(guò)F12定位的。同樣枫慷,里面的輸入框也是這么定位到的让蕾。
3、關(guān)于頁(yè)面跳轉(zhuǎn)或听。因?yàn)槲覀円业捻?yè)面需要跳轉(zhuǎn)很多次才能找到探孝,所以老公提議:我們登錄界面之后,直接輸入目標(biāo)界面的網(wǎng)址誉裆,讓頁(yè)面跳轉(zhuǎn)到我們需要的那個(gè)頁(yè)面顿颅,同時(shí)session還在。于是我就這么做了足丢,事實(shí)上確實(shí)達(dá)到了我們的目的粱腻。
4、點(diǎn)擊了 開搶 的按鈕之后斩跌,彈出一個(gè)對(duì)話框绍些,然后按 確定 按鈕,我之前看老師講的耀鸦,認(rèn)為這是一個(gè)alert對(duì)話框遇革,就按照alert處理,結(jié)果異常顯示頁(yè)面上沒(méi)有alert對(duì)話框÷芸欤看了代碼锻霎,發(fā)現(xiàn)這也是個(gè)超鏈接。按照超鏈接處理之后揪漩,代碼就完成了旋恼。
現(xiàn)在把代碼貼出來(lái),做個(gè)記錄:
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("立即領(lǐng)取(10:00 開搶)")).click();
driver.findElement(By.linkText("確定")).click();
}
}
public void tearDown() throws Exception{
driver.close();
}
}