我是 python selenium 的新手。我正在尝试将 csv 文件上传到门户网站。我创建了以下函数/代码来将文件上传到门户。
def logging_in():
#my login code bla bla bla
def upload_file(urlname,csvfile):
driver.get(urlname)
#Below line not able to format correctly.
WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.TAG_NAME,'iframe')))
if check_exists_by_tag(driver,'iframe'):
iframe = driver.find_element(By.TAG_NAME,'iframe')
driver.switch_to.frame(iframe)
WebDriverWait(driver,30).until(EC.presence_of_all_elements_located((By.NAME, "csvFile")))
if check_exists_by_Name(driver,'csvFile'):
file_input = driver.find_element(By.NAME, "csvFile")
file_input.send_keys(csvfile)
upload_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,"/html/body/div1/div4/div5/span/a")))
upload_button.click()
driver.switch_to.default_content()
if __name__ == '__main__':
logging_in()
time.sleep(2)
csv_files_list = [file for file in os.listdir(inputpath) if file.endswith('.csv')]
for csv_file in csv_files_list:
uploadfile(url,inputpath+csv_file)
文件上传第一次工作正常。在第二个循环期间,文件上传在代码
send_keys
处不起作用。我不确定我在这里缺少什么?
错误消息显示,
upload_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,"/html/body/div1/div4/div5/span/a")))
这是因为
file_input.send_keys(csvfile)
没有将文件输入到我在浏览器中看到的路径。
在第二次循环执行期间,我在文本框中看不到文件名。
您遇到的问题似乎是由于网页的动态行为造成的,其中文件输入元素可能会在首次上传后重置或隐藏。您可以尝试在第一次上传后使用 driver.refresh() 来重置页面并使文件输入可用于下次上传。
另外,在上传下一个文件之前,请尝试执行“file_input.clear()”以删除先前的文件路径并允许新的文件路径。