python3+selenium實(shí)現(xiàn)Web自動(dòng)化5:文件上傳覆积,Cookie操作,調(diào)用 JavaScript熟呛,窗口截圖

一宽档、Selenium之-文件上傳

通過input標(biāo)簽實(shí)現(xiàn)的上傳功能,可以將其看作是一個(gè)輸入框惰拱,即通過send_keys()指定本地文件路徑的方式實(shí)現(xiàn)文件上傳雌贱。

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
from selenium import webdriver
import os

driver = webdriver.Chrome('../tools/chromedriver.exe')
file_path = "file:///" + os.path.abspath('upfile.html')
driver.get(file_path)

# 定位上傳按鈕的位置
driver.find_element_by_name('file').send_keys(os.path.abspath('upfile.txt'))
driver.quit()

二、Selenium之-Cookie操作

網(wǎng)站為了辨別用戶身份偿短、進(jìn)行 session 跟蹤而存儲(chǔ)在用戶本地終端上的數(shù)據(jù)欣孤,也可以叫做瀏覽器緩存。webdriver 對(duì) cookie 的常用操作有添加昔逗、刪除降传、讀取。

(1) get_cookies()-----獲得所有的 cookie 信息
(2) get_cookie(name)-----活得 key 值為 name 的 cookie 的信息
(3) add_cookie(cookie_dict)----添加 cookie勾怒。"cookie_dict" 指字典對(duì)象婆排,必須有 name 和 value 值
(4) delete_cookie(name,optionsString):刪除cookie信息”柿矗“name”是要?jiǎng)h除的cookie的名稱段只,“optionsString”是該cookie的選項(xiàng),目前支持的選項(xiàng)包括“路徑”鉴扫,“域”
(5) delete_all_cookies()----刪除所有 cookie 信息
#!/usr/bin/env python
# -*- encoding: utf-8 -*-

from selenium import webdriver
from time import sleep


base_url = 'https://www.baidu.com/'
browser = webdriver.Chrome('../tools/chromedriver.exe')
browser.get(base_url)

# 1. 獲取 cookie 信息
cookies = browser.get_cookies()
print(cookies)
sleep(2)
browser.quit()

"""
cookies = browser.get_cookies()  # 獲得所有的cookie
with open("cookies.txt", "w") as fp:
    json.dump(cookies, fp)

browser.get("https://www.baidu.com")
browser.delete_all_cookies()
with open("cookies.txt", "r") as fp:
    cookies = json.load(fp)
    for cookie in cookies:        
        browser.add_cookie(cookie)
"""

# 2. cookie 寫入
browser.add_cookie(
    {
        'name': 'add-cookie',
        'value': 'add-cookie-value'
    }
)
# 遍歷cookies打印cookie信息
for cookie in browser.get_cookies():
    print("%s ---> %s" % (cookie['name'], cookie['value']))
sleep(2)
browser.quit()

三赞枕、Selenium之-調(diào)用 JavaScript

對(duì)于 webdriver 中無法操作的動(dòng)作(例如:滾動(dòng)瀏覽器的側(cè)邊欄),可以調(diào)用 webdriver 進(jìn)行瀏覽器的控制坪创。webdriver 提供了execute_script()方法來執(zhí)行 JavaScript 代碼炕婶。

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

from selenium import webdriver
from time import sleep


base_url = 'https://www.baidu.com'
browser = webdriver.Chrome('../tools/chromedriver.exe')
browser.get(base_url)

# window.scrollTo()方法用于設(shè)置瀏覽器窗口滾動(dòng)條的水平和垂直位置。方法的第一個(gè)參數(shù)表示水平的左間距莱预,第二個(gè)參數(shù)表示垂直的上邊距柠掂。
browser.set_window_size(500, 500)
browser.find_element_by_id('kw').send_keys('百度')
browser.find_element_by_id('su').click()
sleep(2)

# 通過javascript設(shè)置瀏覽器窗口的滾動(dòng)條位置
js = "window.scrollTo(100, 450);"
browser.execute_script(js)
sleep(2)

browser.quit()

四、Selenium之-窗口截圖

自動(dòng)化用例是由程序去執(zhí)行的依沮,因此有時(shí)候打印的錯(cuò)誤信息并不十分明確涯贞。如果在腳本執(zhí)行出錯(cuò)的時(shí)候能對(duì)當(dāng)前窗口截圖保存枪狂,那么通過圖片就可以非常直觀地看出出錯(cuò)的原因。webdriver 提供了截圖函數(shù) get_screenshot_as_file() 來截取當(dāng)前窗口肩狂。

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

from selenium import webdriver
from time import sleep

base_url = 'http://www.baidu.com/'
browser = webdriver.Chrome('../tools/chromedriver.exe')

browser.get(base_url)

browser.find_element_by_id('kw').send_keys('python selenium')
browser.find_element_by_id('su').click()
sleep(2)

# 截取當(dāng)前窗口并指定報(bào)錯(cuò)截圖的位置
# browser.get_screenshot_as_file('ScreenShot/14_screenShot.jpg')
browser.get_screenshot_as_file('ScreenShot/14_screenShot.png')

browser.quit()

五摘完、Selenium之-關(guān)閉窗口

close() 關(guān)閉單個(gè)窗口
quit() 關(guān)閉所有窗口


參考鏈接:
https://www.cnblogs.com/csmashang/p/12706835.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末姥饰,一起剝皮案震驚了整個(gè)濱河市傻谁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌列粪,老刑警劉巖审磁,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異岂座,居然都是意外死亡态蒂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門费什,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钾恢,“玉大人,你說我怎么就攤上這事鸳址〈耱剑” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵稿黍,是天一觀的道長疹瘦。 經(jīng)常有香客問我,道長巡球,這世上最難降的妖魔是什么言沐? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮酣栈,結(jié)果婚禮上险胰,老公的妹妹穿的比我還像新娘。我一直安慰自己矿筝,他們只是感情好起便,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著跋涣,像睡著了一般缨睡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陈辱,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天奖年,我揣著相機(jī)與錄音,去河邊找鬼沛贪。 笑死陋守,一個(gè)胖子當(dāng)著我的面吹牛震贵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播水评,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼猩系,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了中燥?” 一聲冷哼從身側(cè)響起寇甸,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疗涉,沒想到半個(gè)月后拿霉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咱扣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年绽淘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闹伪。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沪铭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出偏瓤,到底是詐尸還是另有隱情杀怠,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布硼补,位于F島的核電站驮肉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏已骇。R本人自食惡果不足惜离钝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望褪储。 院中可真熱鬧卵渴,春花似錦、人聲如沸鲤竹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辛藻。三九已至碘橘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吱肌,已是汗流浹背痘拆。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留氮墨,地道東北人纺蛆。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓吐葵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親桥氏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子温峭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容