前段時(shí)間學(xué)完python基礎(chǔ)后拿selenium練練手,相信很多接觸selenium的人都對(duì)這個(gè)語句很熟悉,具體意思后面再談渊抽,簡(jiǎn)單來說實(shí)現(xiàn)自動(dòng)調(diào)用具體瀏覽器漱受,來個(gè)問題问潭,為什么會(huì)這樣寫。很多教程和博客在介紹selenium余寥,都說利用它可自動(dòng)跳轉(zhuǎn)到相應(yīng)網(wǎng)頁怎爵。說它做了什么事,但我想知道問什么,實(shí)現(xiàn)這樣的事為什么會(huì)這樣寫
好吧卧秘,我在網(wǎng)上搜索了很多依然沒有答案呢袱,甚至沒有人發(fā)出相關(guān)的類似問題,他們都在說webdriver.Chrome()是第一步翅敌,干了什么也是簡(jiǎn)單一筆帶過羞福。我開始懷疑我的智商,也許它是一個(gè)很簡(jiǎn)單的語句蚯涮,大家一看就明白了治专。可我依舊不懂
我想遭顶,selenium出現(xiàn)已經(jīng)還久了张峰,在前些年網(wǎng)絡(luò)不發(fā)達(dá)、知識(shí)分享與記錄不太盛行的時(shí)候棒旗。他們拿到selenium怎么知道該怎樣去寫了喘批。沒錯(cuò),說明書铣揉、官網(wǎng)的說明饶深。
官網(wǎng)上查了半天,也只是說了它應(yīng)該這樣寫老速。好吧我已經(jīng)搞累了粥喜,為什么我總碰到這些無厘頭的事
我這個(gè)人最大優(yōu)點(diǎn)與缺點(diǎn)都是堅(jiān)持,幾天后橘券,再次想這個(gè)問題额湘,我注意到上面的from selenium import webdiver。導(dǎo)入包嘛旁舰,我想著到包里的源碼去看看锋华,一看就激動(dòng)了
chrome\webdriver 模塊里 有class WebDriver()
remote\webdriver 模塊里也有 class WebDriver()
Chrome() 的 WebDriver繼承了remote的WebDriver,我似乎有些明白了,Webdriver.Chrome()正是為了實(shí)現(xiàn) class WebDriver()的一個(gè)實(shí)例對(duì)象箭窜,但還是不對(duì),實(shí)現(xiàn)一個(gè)實(shí)例對(duì)象應(yīng)該寫成WebDriver()毯焕,W D都是大寫的,但語句里d是小寫沒括號(hào)明顯不對(duì)磺樱,結(jié)合selenium import webdive它更像是指的是Webdriver這個(gè)包纳猫,而且Chrome()怎么跑出來了,形式上看起來像是一個(gè)方法竹捉,但class WebDriver()里根本沒有定義
折騰了很久無果芜辕,后來在解決另外一個(gè)問題時(shí)注意到模塊的初始化,很多模塊都有這個(gè)東西 __init__,突然就聯(lián)想到這里的問題块差,打開 Webdriver下d的__init__
瞬間懂了侵续,心里一股暖流倔丈,一切都已云淡風(fēng)輕
原來Chrome()是一些家伙另外取得一個(gè)外號(hào),它代表的正是 chrome/Webdriver模塊里calss WebDriver()状蜗,語句前面的這個(gè)Webdriver不是說的類名需五,而是Webdriver這個(gè)包。Webdriver.Chrome() 也就是告訴程序到Webdriver這個(gè)包里找到Chrome模塊里的WebDriver這個(gè)類轧坎,創(chuàng)建一個(gè)WebDriver類的示例對(duì)象宏邮,當(dāng)然事先得把包導(dǎo)進(jìn)來,所以得申明from selenium import webdiver眶根。
這個(gè)問題本身真的不算問題蜀铲,一切都是名稱惹的禍,可我卻煎熬了好久属百,前后解決差不多一個(gè)月记劝,說明我自身存在問題
這也許就是解決這個(gè)不是問題的最大的價(jià)值,即發(fā)現(xiàn)自身解決問題和學(xué)習(xí)的思路存在問題
話說回來族扰。我們遇到問題時(shí) 通常會(huì)怎么解決呢厌丑?問 上網(wǎng)查 不了了之。這確實(shí)應(yīng)該想想渔呵。
評(píng)論去里會(huì)留下我的一些思路怒竿,望各路客官補(bǔ)充指正