Python 等待上载完成或弹出成功消息

Python 等待上载完成或弹出成功消息,python,selenium,Python,Selenium,我有一个selenium应用程序,可以将多个文件上传到web应用程序中 在上载网页上,您可以选择最多4次上载,这意味着如果我上载8次,我必须重复该步骤两次,以便在每个页面上上载4次 我使用selenium时遇到的问题是,它不会减慢速度,这意味着它不会等待前4个文件上传。它立即开始四处移动并上传其他4个文件,并使web小程序崩溃 当我单击“确定”上载4个文件时,我收到以下处理消息: 上传完成后,我收到一条成功的消息: 我的python代码: def upload(driver, fileNum

我有一个selenium应用程序,可以将多个文件上传到web应用程序中

在上载网页上,您可以选择最多4次上载,这意味着如果我上载8次,我必须重复该步骤两次,以便在每个页面上上载4次

我使用selenium时遇到的问题是,它不会减慢速度,这意味着它不会等待前4个文件上传。它立即开始四处移动并上传其他4个文件,并使web小程序崩溃

当我单击“确定”上载4个文件时,我收到以下处理消息:

上传完成后,我收到一条成功的消息:

我的python代码:

def upload(driver, fileNum, filePath):
      #if I have more than one file
      if fileNum > 1:     
            #while number of files is not 0 and files being uploaded on one page are 4
            while fileNum > 0 and i < 4:



                  #add file for every select button

                  select_link = driver.find_element_by_name('file_'+str(n))
                  select_link.send_keys(filePath[j])

                  i += 1
                  n += 1
                  j += 1
                  fileNum -= 1

            #check if after uploading the 4 files there are still more files to upload
            #if yes
            if fileNum > 0:
                  #if yes, click ok to upload the first four and call the function again
                  ok_link = driver.find_element_by_class_name("borderButton")
                  ok_link.click()

                  #recursive call
                  upload(driver, fileNum, filePath)
            else:
                  #just upload it without calling recursive function
                  ok_link = driver.find_element_by_class_name("borderButton")
                  ok_link.click()
def上传(驱动程序、fileNum、filePath):
#如果我有多个文件
如果fileNum>1:
#而文件数不是0,一页上载的文件数是4
当fileNum>0且i<4时:
#为每个选择按钮添加文件
选择链接=驱动程序。按名称(“文件”+str(n))查找元素
选择链接。发送密钥(文件路径[j])
i+=1
n+=1
j+=1
fileNum-=1
#检查上传4个文件后是否还有更多文件需要上传
#如果有的话
如果fileNum>0:
#如果是,请单击“确定”上载前四个,然后再次调用该函数
ok\u link=驱动程序。通过类名称(“边界按钮”)查找元素
确定链接。单击()
#递归调用
上载(驱动程序、fileNum、filePath)
其他:
#只需上传,无需调用递归函数
ok\u link=驱动程序。通过类名称(“边界按钮”)查找元素
确定链接。单击()
如您所见,当前4个文件被上传并且还有更多文件时,我递归调用函数
upload(driver,fileNum,filePath)

有没有办法在调用递归函数之前等待前4个函数完成?要么等待成功的消息弹出,要么等待处理消息消失


我该怎么做?

有两种方法可以等待特定作业完成

  • 使用,您可以在任何其他进程启动之前指定要显示的web元素。这是最好的办法
  • 使用
  • 在本例中,请特别确保html元素包含

    文件已成功上载


    已加载到网页中。

    Mahsum Akbas得到了部分答案。您需要等待
    处理…
    弹出窗口出现然后消失。一种方法是

    wait.until(EC.visibility_of_element_located((By.XX, "your progress bar selector")))
    
    wait.until(EC.visibility_of_element_located((By.XX, "Processing... popup locator")))
    wait.until(EC.invisibility_of_element_located((By.XX, "Processing... popup locator")))
    

    这不是等待元素进度条显示吗?我想等待它消失,直到上传没有完成。请考虑编辑您的帖子,以添加更多的解释您的代码做什么,为什么它会解决这个问题。一个大多只包含代码的答案(即使它有效)通常不会帮助OP理解他们的问题。谢谢。为什么要在文本末尾添加
    弹出定位器
    “处理…弹出定位器”将被处理的定位器替换。。。出现的消息。你的问题中有一张图片。我没有它的HTML,所以我不能把它放在自己。定位器类似于.id(“processingPopupExampleId”)