Selenium2+python自動化33-檔案上傳(send_keys)

來源:互聯網
上載者:User

標籤:sendkeys   通過   oam   name   src   test   data   files   efault   

前言

檔案上傳是web頁面上很常見的一個功能,自動化成功中操作起來卻不是那麼簡單。

一般分兩個情境:一種是input標籤,這種可以用selenium提供的send_keys()方法輕鬆解決;

另外一種非input標籤實現起來比較困難,可以藉助autoit工具或者SendKeys第三方庫。

本篇以部落格園的上傳圖片為案例,通過send_keys()方法解決檔案上傳問題

一、識別上傳按鈕

1.點開部落格園編輯器裡的圖片上傳按鈕,彈出”上傳本地圖片”框。

2.用firebug查看按鈕屬性,這種上傳圖片按鈕有個很明顯的標識,它是一個input標籤,並且type屬性的值為file。

只要找到這兩個標識,我們就可以直接用send_keys()方法上傳檔案了。

二、定位iframe

1.這裡定位元影像片上傳按鈕情況有點複雜,首先它是在iframe上(不懂iframe的看這篇:Selenium2+python自動化14-iframe)

2.這個iframe的id是動態,且沒有name屬性,其它屬性也不是很明顯

3.通過搜尋發現,這個頁面上有兩個iframe,需要定位的這個iframe是處於第二個位置

4.可以通過標籤定位所有的iframe標籤,然後取對應的第幾個就可以了。

三、檔案上傳

1.先定位到檔案上傳按鈕,直接調用send_keys()方法就可以實現啦

# coding:utf-8
from selenium import webdriver
import time
profileDir = r‘C:\Users\Gloria\AppData\Roaming\Mozilla\Firefox\Profiles\1x41j9of.default‘
profile = webdriver.FirefoxProfile(profileDir)
driver = webdriver.Firefox(profile)
driver.implicitly_wait(30)
driver.get("http://www.cnblogs.com/yoyoketang/")
driver.find_element_by_link_text("新隨筆").click()
time.sleep(3)
# 點開編輯器圖片
driver.find_element_by_css_selector("img.mceIcon").click()
time.sleep(3)
# 定位所有iframe,取第二個
iframe = driver.find_elements_by_tag_name(‘iframe‘)[1]
# 切換到iframe上
driver.switch_to_frame(iframe)

# 檔案路徑
driver.find_element_by_name(‘file‘).send_keys(r"D:\test\xuexi\test\14.png")

 

非input標籤的檔案上傳,就不適用於此方法了,需要藉助autoit工具或者SendKeys第三方庫。

Selenium2+python自動化33-檔案上傳(send_keys)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.