python3+selenium-上传下载文件

上传文件一种方式是通过定位input标签,然后使用send_keys()方法传入需要上传文件的路径。另一种是使用第三方插件去上传文件。下面看下imput标签的方式。工具可以自己查下。

<!DOCTYPE html>
<html>
<head> 
</head>
<body>
 
<form action="demo_form.php">
  <input type="file" name="pic" accept="image/*">
  <input type="submit">
</form>
 
</body>
</html>

将上面HTML代码复制到文本编辑器,然后保存成.htm文件。

from selenium import webdriver
dr = webdriver.Chrome()
dr.maximize_window()
dr.implicitly_wait(10)
dr.get('file:///C:/Users/ms/Desktop/new%201.htm')
dr.find_element_by_name('pic').send_keys('C:/Users/ms/Desktop/项目管理工具/项目管理工具缺陷统计.xlsx')

一般能定位到input标签就可以使用这样的方式来上传文件。

下载文件需要针对浏览器进行配置,或者使用第三方的插件。

火狐浏览器

from selenium import webdriver
import os
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.dir','D:\workspace')
profile.set_preference('browser.download.folderList',2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'text/x-python')
 
dr = webdriver.Firefox(firefox_profile=profile)
dr.maximize_window()
dr.implicitly_wait(10)
dr.get('http://tungwaiyip.info/software/HTMLTestRunner.html')
dr.find_element_by_link_text('HTMLTestRunner.py').click()

代码是下载了原生的HtmlTestRunner。

browser.download.dir:指定下载路径,好像windows必须使用\来当路径符

browser.download.folderList:下载路径设置,0:下载到桌面、1:下载到浏览器默认地址、2:下载到指定路径

browser.download.manager.showWhenStarting:是否显示下载器,貌似没啥用,True或False都没看见

browser.helperApps.neverAsk.saveToDisk:设置Content-type,对应的类型将不再弹出保存提示框

可以F12开发者工具看请求,在响应头可以看到对应的Content-type

谷歌浏览器

from selenium import webdriver
 
option = webdriver.ChromeOptions()
prefs = {'profile.default_content_settings.popups':0,'download.default_directory':'d:\\'}
option.add_experimental_option('prefs', prefs)
 
dr = webdriver.Chrome(chrome_options=option)
dr.maximize_window()
dr.implicitly_wait(10)
dr.get('http://tungwaiyip.info/software/HTMLTestRunner.html')
dr.find_element_by_link_text('HTMLTestRunner.py').click()

profile.default_content_settings.popups:设置0禁止弹出窗口
download.default_directory:设置下载路径

作者:梦忆安凉
来源:CSDN
原文:https://blog.csdn.net/a54288447/article/details/81304970

猜你喜欢

转载自blog.csdn.net/weixin_44065501/article/details/89394841