
程序的主流程順序是:當(dāng)前頁(yè)面列表識(shí)別-->后續(xù)任務(wù)生成
下面按照重要以及有趣的順序介紹。
1.列表頁(yè)識(shí)別
首先我們不妨去思考,作為活生生的人你如何發(fā)現(xiàn)這個(gè)頁(yè)面是你想要的列表頁(yè)?是不是因?yàn)槟憧梢?b>一眼就看見(jiàn)列表?那么列表頁(yè)面的規(guī)則我們基本就找全了:
? ? 1.排列規(guī)則的鏈接被你認(rèn)為是列表
? ? 2.你能一眼看見(jiàn)這些排列規(guī)則的鏈接說(shuō)明它們的整體區(qū)域在你的主視圖范圍內(nèi)。只要你認(rèn)同以上想法,認(rèn)為頁(yè)面中心的列表才是我們想要的列表就可以看下面的流程圖了。

? ? 1.連續(xù)多列表塊,如http://www.chinasafety.gov.cn/newpage/aqbz/aqbz_gjbzgb.htm。
? ? 2.加入權(quán)重打分機(jī)制一開始是為了過(guò)濾寫的比較詭異的導(dǎo)航欄,可以有效提高識(shí)別準(zhǔn)確性,不造成誤判。
? 3.而其他過(guò)濾規(guī)則,舉個(gè)例子 http://jgdw.chinasafety.gov.cn/login (隨便找的 大家意會(huì)一下)這種含有更多的肯定不是我們的目標(biāo)頁(yè)面,而更多點(diǎn)進(jìn)去才是。
? 4.而加入頁(yè)面中有<h1>且h1中的文本與網(wǎng)頁(yè)的title相同,不要想了九成九是文章頁(yè),直接過(guò)濾就好,這是小樣本。
識(shí)別效果圖如下:

2.目錄樹展開
假如頁(yè)面包含目錄樹,去嘗試展開,展開方式為執(zhí)行JavaScript(暴力展開或使用接口)。值得注意的是:
? ? 1.目錄樹就在當(dāng)前頁(yè)面
? ? 2.目錄樹在iframe中
這兩點(diǎn)需要區(qū)分對(duì)待,但其實(shí)除了切換iframe這個(gè)步驟外,其他邏輯相同。
3.iframe處理
這個(gè)就很簡(jiǎn)單了,切進(jìn)去發(fā)現(xiàn)不是目錄樹后切出來(lái),根據(jù)其src屬性生成后續(xù)任務(wù)。
4.點(diǎn)擊事件與Ajax處理
此處Ajax與點(diǎn)擊事件做等同處理,鏈接中href屬性動(dòng)態(tài)生成的也走相同邏輯,將元素xpath與動(dòng)作作為參數(shù)傳至后續(xù)任務(wù),后續(xù)任務(wù)進(jìn)行點(diǎn)擊或其他操作。
主要邏輯就在上面了,后面還會(huì)寫一篇關(guān)于selenium的注意事項(xiàng)的文章,踩了不少坑。