Selenium 启动Webdriver问题汇总
webdriver-manage用法
https://www.cnblogs.com/zibinchen/p/14310637.html
如果研习该篇文档,以下webdriver各类问题即可忽略,不必再看
安装selenium版本
命令行输入pip install selenium
pip install selenium
准备各浏览器webdriver
建议:不要使用当前时间最新的浏览器版本,因为新版不一定稳定,容易产生一系列问题,往前推一两个版本为合适
禁止chrome升级办法
mac:
# 在终端输入:
cd ~/Library/Google
sudo chown root:wheel GoogleSoftwareUpdate
# 打开chrome-帮助-关于chrome,看效果
Chrome浏览器
历史版本:https://dl.lancdn.com/landian/soft/chrome/m/?utm_sources=DownPageBot
ChromeDriver仓库:http://chromedriver.storage.googleapis.com/index.html
Firefox浏览器
【GeckoDriver仓库】https://github.com/mozilla/geckodriver/releases
GeckoDriver用于驱动Firefox,在这之前请确保已经正确安装好了Firefox浏览器并可以正常运行。
Edge浏览器
Microsoft Edge Webdriver:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Microsoft Edge Brower:
链接:https://pan.baidu.com/s/1fmCLge1l80i8ERHNuTjeQg
提取码:frjy
【关闭Edge自动更新】
- WIN+R,输入services.msc
- 找到Windows Upadate双击,选择禁用,点击确定
webdriver安放位置
可以随便放,但需要知道路径
建议放在启动配置文件同级目录下
chrome指定下载路径并允许下载多个文件
elif browser == "chrome":
from selenium.webdriver.chrome.options import Options
options = webdriver.ChromeOptions()
prefs = {
'profile.default_content_settings.popups': 0,
'download.default_directory': excelpath, "profile.default_content_setting_values.automatic_downloads": 1}
options.add_experimental_option('prefs', prefs) # 指定下载路径,并且允许下载多个文件
driver = webdriver.Chrome(
executable_path=chrome_driver,
chrome_options=options)
return driver
Selenium启动webdriver写法
封装好启动webdriver的方法
注:通过webdriver-manager自动下载driver
#!/usr/config/env python
# -*- coding:utf-8 -*-
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.microsoft import EdgeChromiumDriverManager
from webdriver_manager.microsoft import IEDriverManager
from webdriver_manager.opera import OperaDriverManager
from config.conf import cm
def browser(browser='chrome'):
if browser == "firefox" or browser == "ff":
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.dir', cm.download_path) # 相同类型的文件上一次的下载保存位置
profile.set_preference('browser.download.folderList',
2) # 设置Firefox的默认下载文件夹。0是桌面;1是“我的下载”;2是自定义。这一选项你可以直接在“首选项-下载-将所有文件保存在此文件夹”中修改。但请注意,如果你在“首选项-下载-保存每个文件夹前询问存储位置“(也就是要求弹出下载对话框),那么本选项无效
profile.set_preference('browser.download.manager.showWhenStarting',
False) # 'application/octet-stream'对应下载的文件格式是rar
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/octet-stream')
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install(), firefox_profile=profile)
elif browser == "ff_headless":
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.dir', cm.download_path)
profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/octet-stream')
from selenium.webdriver.firefox.options import Options
firefox_options = Options()
firefox_options.add_argument('--headless')
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install(), firefox_profile=profile,
options=firefox_options)
elif browser == "chrome":
options = webdriver.ChromeOptions()
prefs = {
'profile.default_content_settings.popups': 0,
'download.default_directory': cm.download_path,
"profile.default_content_setting_values.automatic_downloads": 1}
options.add_experimental_option('prefs', prefs) # 指定下载路径,并且允许下载多个文件
driver = webdriver.Chrome(executable_path=ChromeDriverManager().install(), options=options)
elif browser == "chrome_headless":
options = webdriver.ChromeOptions()
prefs = {
'profile.default_content_settings.popups': 0,
'download.default_directory': cm.download_path,
"profile.default_content_setting_values.automatic_downloads": 1}
options.add_experimental_option('prefs', prefs)
options.add_argument('-headless')
driver = webdriver.Chrome(executable_path=ChromeDriverManager().install(), options=options)
elif browser == "chrome_linux":
options = webdriver.ChromeOptions()
prefs = {
'profile.default_content_settings.popups': 0,
'download.default_directory': cm.download_path,
"profile.default_content_setting_values.automatic_downloads": 1}
options.add_experimental_option('prefs', prefs)
options.add_argument('-headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(executable_path=ChromeDriverManager().install(), options=options)
elif browser == "edge":
driver = webdriver.Edge(executable_path=EdgeChromiumDriverManager().install())
elif browser == "IE":
driver = webdriver.Ie(executable_path=IEDriverManager().install())
elif browser == "opera":
driver = webdriver.Opera(executable_path=OperaDriverManager().install())
return driver
if __name__ == '__main__':
browser('chrome')
```