1. 程式人生 > 其它 >最簡單的方式實現ListView多選

最簡單的方式實現ListView多選

背景:

從本地資料夾選擇檔案上傳,上傳標籤為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]

完美解決。