当上传完成后,下面总大小的元素就会隐藏,当元素隐藏后,再判断上面进度,当文件上传时,显示进度条,进度到99%时,显示"处理中",上传成功后,显示"完成"
因上传文件的时间与网速及其他因素有关,所以不能用time.sleep()或者driver.implicitly()。
使用WebDriverWait()方法最好:
from selenium.webdriver.support.ui import WebDriverWait
...
#底部总大小进度元素
process = driver.find_element_by_xpath(".//*[@id='js_upload_box']/div/div[4]/div[2]")
#直到底部总大小进度元素隐藏,返回False
wait_process = WebDriverWait(driver,60).until_not(lambda driver:process.is_displayed())
#进度状态元素
process_status = driver.find_element_by_css_selector( "#js_upload_table>tr>td>span")
#如果已隐藏(not False)
if not wait_process:
if process_status.text == u"成功": #判断进度状态为“成功”
print u"上传成功"
else: #否则进度状态为其他
print u"%s"%process_status.text
曾经想过用
WebDriverWait(driver,60).until(process_status.text == u"\u6210\u529f")) #u"\u6210\u529f"是成功
但是进度状态只要有text出现,就会判断失败,不会等到出现“完成”,所以不可行
|
|