问题描述
我在下面有一个功能,可以单击我页面上表单上的提交按钮。为了成功提交表格,必须附上一份文件。但是,有时根据数据库的链接方式,保存的文档不会填充为已上传。
这是一个小细节,优先提交表单。我创建了一个 if 语句来检查上传按钮是否存在。如果是,那么它应该从我的电脑上传一个文件,然后点击提交按钮。如果不是,则只需单击提交按钮即可。
当上传按钮存在时,这有效。然而,当它不是时,它会卡在 if 条件上,而不会进入 else 子句。
def submit_draw_request(driver,document_file_path):
if EC.visibility_of_element_located((By.XPATH,"//button[text()='Upload']")):
shared.upload_file_from_computer(driver,"//input[@class='MultipleFileUploadWidget']",document_file_path)
time.sleep(2)
shared.click_button(driver,elements.submit_button)
else:
time.sleep(2)
shared.click_button(driver,elements.submit_button)
解决方法
您似乎缺少定义预期条件超时。
所以它应该是这样的:
wait = WebDriverWait(driver,10)
def submit_draw_request(driver,document_file_path):
if wait.until(EC.visibility_of_element_located((By.XPATH,"//button[text()='Upload']"))):
shared.upload_file_from_computer(driver,"//input[@class='MultipleFileUploadWidget']",document_file_path)
time.sleep(2)
shared.click_button(driver,elements.submit_button)
else:
time.sleep(2)
shared.click_button(driver,elements.submit_button)
,
您可以尝试在 python 中使用 try-except
块。在使用 WebDriverWait
和 expected_conditions
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
try:
wait.until(EC.visibility_of_element_located((By.XPATH,"//button[text()='Upload']")))
shared.upload_file_from_computer(driver,document_file_path)
time.sleep(2)
shared.click_button(driver,elements.submit_button)
except:
time.sleep(2)
shared.click_button(driver,elements.submit_button)
try 块可让您测试代码块的错误。
except 块可让您处理错误。
finally 块可让您执行代码,而不管 try- 和 except 块的结果如何。