Python WebDriver 檔案上傳

來源:互聯網
上載者:User

標籤:頁面   cti   inpu   pip   selenium   自動化   自動   xpath   os.path   

昨天寫了Web 檔案下載的ui自動化,下載之後,今天就要寫web 檔案上傳的功能了。

當然從折騰了倆小時才上傳成功。下面寫一下自己操作的步驟

首先網上說的有很多方法

如 input 標籤的最好做了,直接定位到元素,然後再sendKeys("value")即可

<input id="file_name" class="text-1 w255" type="text" readonly="" value="" data-file=""/>

奈何研發的同學做成了 readonly  屬性的input ,好了學了一點,這種屬性的input就沒辦法 使用 sendkeys了。

只能換其他方法了,

使用 下面  webdriver for python類比鍵盤操作 

            #下面的方式沒有成功            #ActionChains(self.driver).send_keys(releaseFile).perform()            #Ctrl + a            # ActionChains(self.driver).key_down(Keys.CONTROL).send_keys(‘a‘).key_up(Keys.CONTROL).perform()            # self.driver.implicitly_wait(5)            # ActionChains(self.driver).key_down(Keys.CONTROL).send_keys(‘c‘).key_up(Keys.CONTROL).perform()            # self.driver.implicitly_wait(5)            # ActionChains(self.driver).key_down(Keys.CONTROL).send_keys(‘v‘).key_up(Keys.CONTROL).perform()            # time.sleep(2)            # ActionChains(self.driver).key_down(Keys.ENTER).perform()            #self.driver.find_element_by_xpath(".//*[@id=‘file_name‘]").send_keys(releaseFile)

 發現滑鼠實際操作的還是頁面,而不是彈出的檔案選擇框,所以這種方式還是不行。

 

最後參考 

Python selenium檔案上傳方法匯總

http://www.jb51.net/article/92678.htm

使用了 SendKeys,因為其他方法有的需要安裝其他程式

首先要安裝SendKeys庫,可以用pip安裝

pip install SendKeys 

安裝的過程遇到如下問題

 

 此時需要到 http://aka.ms/vcpython27  下載

 https://www.microsoft.com/en-us/download/details.aspx?id=44266

 

 

然後執行安裝 sendkeys即可成功。

 

代碼如下

#-*-coding:utf-8-*-#Time:2017/7/1-15:47#Author:YangYangJun#-*-coding:utf-8-*-import SendKeys#點擊上傳 下載附件            time.sleep(2)            self.driver.find_element_by_xpath(".//*[@id=‘down_bar_code_template‘]").click()            self.driver.implicitly_wait(5)            #releaseFile_Path = os.path.join(os.getcwd(),‘test_data‘)            releaseFile = r‘C:\PySpace\CMS\UiTest\test_data‘ + ‘\UI_Release01.xlsx‘            time.sleep(2)            self.driver.implicitly_wait(5)            self.driver.find_element_by_css_selector(".webuploader-pick").click()            time.sleep(2)            #將路徑輸入            SendKeys.SendKeys(releaseFile)            time.sleep(2)            #確定路徑輸入            SendKeys.SendKeys("{ENTER}")            time.sleep(2)            #確定開啟按鈕            SendKeys.SendKeys("{ENTER}")            time.sleep(2)            self.driver.implicitly_wait(5)            #點擊上傳            self.driver.find_element_by_xpath(".//*[@id=‘file_upload_btn‘]").click()            time.sleep(6)            #提示資訊, 上傳成功            successTest = u"上傳商品成功!"            get_reInfo = self.driver.find_element_by_xpath(".//*[@id=‘step_05‘]/ul/li[1]").text            if successTest == get_reInfo:                print u"上傳成功!"                #點擊查看商品                self.driver.find_element_by_xpath(".//*[@id=‘view_goods‘]").click()                drugList = [‘阿奇黴素片‘]                #調用驗證及刪除函數                self.get_Verify(drugList)            else:                print u"上傳失敗!"        else:            print u"進入賣家中心失敗"

 

效果如

 

 第一個 類比斷行符號是為了確認輸入的檔案路徑,第二個斷行符號是為了確認點擊開啟按鈕。

 

至此檔案的上傳功能就已經完成了。

網上說這種方式有些不穩定,有時間的話可以學習一下其他方法。

 

Python WebDriver 檔案上傳

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.