我有一个将多个文件上传到Web应用程序的selenium应用程序
在上传网页上,您最多可以选择4次上传,这意味着如果我上传8次,我必须重复此步骤两次才能在每个页面上传4次
我对selenium的问题是它不会减慢速度,这意味着它不会等待上传的前4个文件。它立即开始移动并上传其他4并崩溃网络小程序。
当我点击确定上传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()
正如您所看到的,当上传前4个并且还有更多文件时,我会递归调用函数upload(driver, fileNum, filePath)
有没有办法在调用递归函数之前等待前4个完成?要么等待成功的消息弹出,要么等待处理消息消失?
我该怎么做?
答案 0 :(得分:1)
有两种方法可以等待特定的工作完成。
在这种情况下,请特别确保html元素包含
文件已成功上传!
已加载到网页中。
答案 1 :(得分:1)
Mahsum Akbas有部分答案。您可能希望等待Processing...
弹出窗口显示然后消失。一种方法是
wait.until(EC.visibility_of_element_located((By.XX, "Processing... popup locator")))
wait.until(EC.invisibility_of_element_located((By.XX, "Processing... popup locator")))
答案 2 :(得分:0)
wait.until(EC.visibility_of_element_located((By.XX, "your progress bar selector")))