為了媳婦的一張號,我與百度醫生槓上了

2022-01-19 16:26:41 字數 2817 閱讀 1139

需求是催生專案和推進專案的不竭動力。

背景:1.支付寶

在支付寶的城市服務中,定位到指定城市,是能夠看一些醫院提供了預約**介面的,顯然a醫院當之無愧也在其中。

簡便易用的支付寶使用者體驗,即便是第一次來也好像是經常使用這項服務般熟練。找到a院,搜尋婦產科,在list中有若干醫生,有的標註無號源,有的標註可預約,大抵如下:

於是滿懷激動的點選"可預約",可是彈出來的卻不是我想要的結果--!

後來聽到諸如凌晨12點會有號放出,但是最終也是收到同樣冷冰冰的彈出視窗。對於用此招掛上號的我深表佩服,只是拋開這個不說,感覺a院在支付寶這塊的投入太低,ui設計也很呆板,最主要的是搶不到號。

很顯然,這個功能,還沒有,那我只能自己動手了~~~

我的思路

碼前預熱

1. 框架選擇

毫無疑問,我們採用selenium,一款web測試應用工具,模擬我在瀏覽器上的操作。可以基於ie、ff、chrome等等瀏覽器,實現啟動關閉瀏覽器/頁面,在頁面上點選、定位元素等相應操作。關於selenium webdriver的背景知識就不做介紹,一篇博文顯然難以闡述清楚。

2. 工具使用

在使用selenium過程中,頁面元素的定位是個核心問題。我們可以使用by類下面的by.name,by.id,by.linktext分別獲取獲取name屬性,id屬性,超連結文字。這些方式的定位我們直接可以在dom結構中看出來,其中比較複雜的是xpath,需要根據dom結構實現定位,這時候我們需要乙個工具可以實時的測試我們的xpath表示式是否能夠正確定位到指定元素。

a.在firefox瀏覽器中,我們可以安裝外掛程式firepath

思路有了,工具齊了,那就開始著手做吧

1.啟動chrome瀏覽器

system.setproperty ( "webdriver.chrome.driver" , "c:\\users\\administrator\\downloads\\chromedriver_win32\\chromedriver.exe" );

webdriver driver = new chromedriver();

2.定位元素執行動作

webelement loginlink = driver.findelement(by.xpath(".//*[@id='u1']/a[7]"));

loginlink.click();

3.等待頁面載入完成

有時候在driver.get()到某個頁面時,如果頁面沒有載入完成,這時候去定位元素容易丟擲異常,所以需要加入等待頁面載入完成的功能。這裡將其封裝在乙個函式中:

public static void waitforload(webdriver driver) 

};webdriverwait wait = new webdriverwait(driver, 30);

wait.until(pageload);

}

4.遇到異常重新啟動機制

監控的原理在於間歇性的點選相應的科室並監聽頁面中是否有想要的元素出現(如出現預約**),如果出現則點選進入相應介面,如果沒有出現則一直監聽。

但是在實測過程中,發現持續點選某科室會出現頁面一直載入的情況,這時候會丟擲異常,程式無法正常進行。

所以在這裡捕獲異常,通過遞迴呼叫的思想,關閉先前的driver物件,並呼叫自己重新生成乙份監聽driver物件,從而保證程式正常執行,提高了程式的健壯性。

try  catch (interruptedexception e) 

departlink.click();//departlink為婦產科的文字鏈結

monitoringtimes++;//監聽的次數

system.out.println("第" + monitoringtimes + "次監控");

return d.findelement(by.xpath("//*[@id='doctor-info-list']/descendant::*[contains(text(), '預約**')][1]"));

}});

waitforload(driver);

} catch (exception e) finally

}

5.成果展示

但從程式來說,可以現實自動搶號功能,已成功預約到非婦產科以外科室的號。

執行到監控的頁面並監聽:

實時監聽過程:

難點和展望

寫此程式,純屬需求催生,僅為一樂,勿動邪念^^。

我的百度實習生面試(一)

本人是中北大學軟體學院的大四學生,普通二本院校,雙非。但在自己的努力下,保研至天津大學電腦科學與技術學院。選擇繼續讀研,是我知道自己理論水平與實踐能力不協調,希望能夠提高一下理論水平,並且學歷高更有工作優勢 大四後半學期要外出實習是學校的硬性要求,也是我特別期待的,我很希望能夠提前去職場歷練一下,學...

我部落格與百度「蜜月期」的實況記錄

我的個人部落格上線乙個月了,中間有很多的轉折,可謂驚心動魄,我的心也跟著起伏動盪,真是 太刺激了 我反思了一下我應該是處在seo的第乙個階段,典型的特點就是 對 的排名相當關注,公升著喜,降者憂,被搜尋引擎折磨 看來我還是嫩啊,到第二個階段就比較成熟了,不再被動能基本掌握搜尋引擎,到第三階段就比較超...

百度熊掌號seo名稱的唯一性,造就熊掌號佔坑思考

相信申請熊掌號的朋友都注意到這問題,熊掌號名稱是唯一的,乙個人用了這個名稱其他人就不能使用了。因為這種策略就激發了一些人群的佔位思想,占領乙個名稱或許將來也是一大筆收入,就和當年微博名稱的稀缺性有點雷同。相信近期在手機端搜關鍵詞的時候大家www.cppcns.com都會發現,熊掌號將多個號碼摺疊起來...