webdriver-manage用法
https://www.cnblogs.com/zibinchen/p/14310637.html
如果研習該篇文檔,以下webdriver各類問題即可忽略,不必再看
安裝selenium版本
命令行輸入pip show 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自動更新】
1、WIN+R,輸入services.msc
2、找到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')
