最簡單的方式實現ListView多選
阿新 • • 發佈:2021-01-07
背景:
從本地資料夾選擇檔案上傳,上傳標籤為input類
說明:
直接選擇採用send_keys()方法上傳,過程中遇到了一些坑,十分難忘
嘗試一:
基類封裝方法
def input_text(self, text, *loc): """ 向輸入框中輸入內容 :param text: 輸入內容 :param loc: 定位器 :return: """ input_ele = self.driver.find_element(*loc) input_ele.send_keys(text)
頁面封裝方法:
def get_allFiles(self, type_num): """ 獲取本地檔案列表 :param type_num: 選擇上傳的資源型別 :return: 本地檔案路徑 """ file_list = [] if type_num == 1: path = "D:/自動化檔案/圖片" elif type_num == 2: path = u"D:/自動化檔案/音視訊" elif type_num == 3: path= u"D:/自動化檔案/文件" dirs = os.listdir(path) # 返回指定路徑下的檔案和資料夾列表 for file in dirs: file_name = path+"/"+file file_list.append(file_name) return file_list def uploads(self, filename): """ 選擇上傳檔案 :return: """ print("upload:", filename) self.input_text(filename, *self.add_file)
測試用例:
def test_addFiles(self): """ 測試上傳資源 :return: """ sleep(3) sure_rtype = self.rPage.click_resource_type() # 選擇要上傳的型別 sleep(3) allfiles_list = self.rPage.get_allFiles(sure_rtype) # 獲取當前型別下,所有本地檔案列表 add_filenum = randint(1, 9) # 上傳的檔案個數 print("選擇個數", add_filenum) num_list = [] # 確定檔案列表需上傳檔案的下標 flag = True while flag: if len(num_list) < add_filenum: rand_num = randint(0, len(allfiles_list)-1) num_list.append(rand_num) flag = True else: flag = False for i in num_list: self.rPage.uploads(allfiles_list[i])
情況1.多檔案上傳時,採用迴圈遍歷上傳方式,上傳資料重複,出現:檔案1;檔案1,檔案2;檔案1,檔案2,檔案3...
開始猜測是因為執行速度太快,所以在迴圈中加入延時,但結果依然沒有改變,猜測錯誤。後來看到一篇文章,說檔案後加“\n”可以解決上傳多個檔案出現重複的問題,重新嘗試。
嘗試二:
name = "" for i in num_list: sleep(2) name = name + allfiles_list[i] + "\\n" result = name[0:-2] self.rPage.uploads(result)
把所有選擇的檔案組合成一個字串直接傳入,出現無效引數異常。
開始懷疑是“\\n”出了問題,但是控制檯輸出結果似乎也沒錯。
驗證開始:直接貼上了控制檯輸出的結果,放在上傳函式中:
self.rPage.uploads("D:/自動化檔案/音視訊/飛鳥和蟬 - 任然.mp3\nD:/自動化檔案/音視訊/謫仙 - 伊格賽聽、葉裡.mp3")
結果上傳成功了。到這我已經完全蒙了,為什麼一樣的字串放在變數裡不成功,直接寫成功了呢?也許某個環節把型別搞錯了,
結果改成了這樣:
self.rPage.uploads(str(result))
這樣:
self.rPage.uploads("""\""""+ result+"""\""")
都不行!!
後來看到這個:https://blog.csdn.net/u012095723/article/details/97774320
input的上傳用多行字串來實現
name = "" for i in num_list: name = name + allfiles_list[i] + "\n" result = name[0:-1]
完美解決。