Python WebDriver 文件上傳(一)

昨天寫了Web 文件下載的ui自動化,下載以後,今天就要寫web 文件上傳的功能了。css

固然從折騰了倆小時才上傳成功。下面寫一下本身操做的步驟python

首先網上說的有不少方法web

如 input 標籤的最好作了,直接定位到元素,而後再sendKeys("value")便可函數

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

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

只能換其餘方法了,ui

使用 下面  webdriver for python模擬鍵盤操做 spa

            #下面的方式沒有成功
            #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)

 發現鼠標實際操做的仍是頁面,而不是彈出的文件選擇框,因此這種方式仍是不行。.net

 

最後參考 3d

Python selenium文件上傳方法彙總

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

使用了 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"進入賣家中心失敗"

 

效果以下圖

 

 第一個 模擬回車是爲了確認輸入的文件路徑,第二個回車是爲了確認點擊打開按鈕。

 

至此文件的上傳功能就已經完成了。

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

相關文章
相關標籤/搜索