Python使用selenium庫為driver添加cookie信息的一些坑
也許你在瀏覽一些網(wǎng)頁的時(shí)候會(huì)遇到這種情況,有的網(wǎng)頁的內(nèi)容會(huì)設(shè)置為登錄可見。
如果想要用driver去驅(qū)動(dòng)瀏覽器瀏覽隱藏內(nèi)容的話,就需要事先給它添加cookie信息,這幾天使用的時(shí)候遇到了一些坑,簡單說明下。
首先,我們先創(chuàng)建一個(gè)driver:
創(chuàng)建出來的driver專門有一個(gè)添加cookie信息的方法 driver.add_cookie() ,他接受的參數(shù)是一個(gè)字典。回到本文正題,下面說說坑。
add_cookie() 方法接受的字典參數(shù)的鍵名不是隨意起的。
不能想當(dāng)然地分解獲取到內(nèi)容的等號(hào)左右的信息。他的鍵名都是有意義的,一般記住 name 和 value 即可,分別代表cookie的名稱和動(dòng)態(tài)生成的值。
確保獲取到的cookie內(nèi)容是有效的。
舉個(gè)栗子,這是我在登陸某網(wǎng)站后看到的cookie內(nèi)容:
當(dāng)然,不知道的話也可以多嘗試,但如果你是第一次使用 add_cookie() 方法,建議你一定要在嘗試前先看看坑三!
當(dāng)你高高興興地進(jìn)入目標(biāo)網(wǎng)址,并想給driver添加好cookie信息:
它可能會(huì)報(bào)錯(cuò),注意,這里說的是可能。
如果你遇到了類似 Message: unable to set cookie 的錯(cuò)誤,建議使用更穩(wěn)妥的方式:
就是說,在登錄頁面添加cookie信息,然后再訪問目標(biāo)網(wǎng)址。
如有錯(cuò)誤,歡迎指正~
相關(guān)評(píng)說:
千陽縣滑塊: ______ 基于文本文檔(Markdown) 設(shè)想好需要的基本需要的表、字段、類型;使用 Rails Migration 隨著功能的開發(fā)逐步創(chuàng)建表;隨著細(xì)節(jié)功能的開發(fā)、需求,逐步增加字段,刪除字段,或者調(diào)整字段類型;第一個(gè) Release 的時(shí)候清理 Migrations 合并成一個(gè); 隨著后期的改動(dòng),逐步增加、修改、刪除字段或表.基本上我的所有項(xiàng)目都是這么搞的,這和項(xiàng)目是否復(fù)雜無關(guān).所以我前面為什么說思路需要轉(zhuǎn)變.
千陽縣滑塊: ______ selenium2是一個(gè)自動(dòng)測(cè)試框架.類似的框架,其中有名氣應(yīng)該還有2個(gè),一個(gè)是windmill,另一個(gè)似乎pamrie還不夠格.selenium2搭建簡單,與python結(jié)合著使用時(shí)注意把driver設(shè)置正確就要中以.建議下載tgz包,然后在命令行下運(yùn)行python setup.py install方式安裝.安裝到python的site-package目錄后,在任何地方都可以用python調(diào)用它.python與eclipse結(jié)合,你找一找pydev的安裝文檔就可以了.通過pydev就可以方便的編輯python程序.用python開發(fā),相對(duì)java開發(fā)來講,不需要依賴各種包.所有的包都安裝在統(tǒng)一的目錄下.
千陽縣滑塊: ______ python的js解析,發(fā)現(xiàn)使用Selenium+PhantomJS的方案還是比較適合我的,以下是環(huán)境配置教程. Selenium及PhantomJS介紹: Selenium是一個(gè)用于Web應(yīng)用程序測(cè)試的工具,Selenium測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣...
千陽縣滑塊: ______ 調(diào)用js方法 execute_script(script, *args) 在當(dāng)前窗口/框架 同步執(zhí)行javaScript 腳本:JavaScript的執(zhí)行.*參數(shù):適用任何JavaScript腳本.使用:driver.execute_script('document.title') 使快播登陸用戶名輸入框標(biāo)紅顯示:#coding=utf-8 from ...
千陽縣滑塊: ______ 其實(shí)python自帶的uinttest就挺好的 驅(qū)動(dòng)數(shù)據(jù)的話,直接用下面這樣的代碼就行 source = open("input_file.txt", "r") values = source.readlines() for search in values: selenium.open("/test_page") selenium.click("buttonPress") ... # test ... ...
千陽縣滑塊: ______ 你可以在chrome上加一個(gè)代理,比如tiny proxy,它是純python寫的.你改一改就可以奕成抓包程序, 自然就可以獲得返回的請(qǐng)求. 另外在selenium里,也應(yīng)該可以獲得響應(yīng)結(jié)果.它通過chrome驅(qū)動(dòng),我沒有仔細(xì)看過代碼,webkit內(nèi)核是直接通過toHtml,或者是類似的命令可以獲得響應(yīng)結(jié)果的. selenium應(yīng)該也可以. 猜可以通過javascript驅(qū)動(dòng)selenium,獲得響應(yīng)結(jié)果.
千陽縣滑塊: ______ selenium是一個(gè)自動(dòng)化測(cè)試框架,它擁有IDE和API接口,可以應(yīng)用于Java, C#. Python, Ruby等語言.用selenium來構(gòu)建一個(gè)自動(dòng)化的測(cè)試程序非常的簡單.不過首先你需要熟悉web應(yīng)用里面的request, response概念,以及XPath的用法.這里我...
千陽縣滑塊: ______ 用selenium庫,模擬動(dòng)作選課,獲取視頻總時(shí)長,時(shí)長結(jié)束,重新選課
千陽縣滑塊: ______ Web UI test automation Web UI 自動(dòng)化 libraries 各種庫selenium webdriver - 瀏覽器自動(dòng)化工具splinter - 簡單的web自動(dòng)化工具,讓元素定位,表單提交等更加容易mechanize - 有狀態(tài)可編程的瀏覽器frameworks and wrappers 框架和封裝py....
千陽縣滑塊: ______ 請(qǐng)參考下面的例子:#coding=utf-8 from selenium import webdriver import time driver = webdriver.Firefox() driver.get("http://www.youdao.com")#向cookie的name 和value添加會(huì)話信息.(***樓主要的應(yīng)該是這個(gè)噢***) driver.add_cookie({'name'...