使用selenium模拟浏览器进行测试或者开发的时候,不免会遇到多种问题。本文将对这些问题进行总结和分析。
意思是:chromedriver执行路径已经被废弃,需要使用service参数的方法。之前版本写执行路径,经常会遇到版本不匹配的问题。需频繁的更新驱动版本。故将其废弃。其对应的代码如下:
from selenium import webdriver # pip3 install selenium
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager # pip3 install webdriver_manager
import time
chrome_option = webdriver.ChromeOptions()
# chrome_option.add_argument('--headless') # 注释掉无头设置
chrome_option.add_argument('--disable-gpu')
chrome_option.add_argument('--no-sandbox') # root用户需添加该行
chrome_option.add_argument('--local-timezone=Asia/Shanghai') #指定时区
chrome_option.add_argument("start-maximized")
chrome_option.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_option.add_experimental_option('useAutomationExtension', False)
chrome_option.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # 不加载图片
service = Service(ChromeDriverManager().install()) #此行是关键
with webdriver.Chrome(service=service, options=chrome_option) as browser:
browser.get("https://ip.useragentinfo.com")
time.sleep(60)
browser.close()
出现这问题的原因是:chromedriver驱动与系统中的chrome版本不匹配。这是由于Chrome进行了升级,但是chromedriver还是老版本导致。
解决这个问题的方法有两种:
webdriver.Chrome("/usr/local/bin/chromedriver", options=chrome_option )
这主要是浏览器有许多的参数selenium没有修改到。这就需要使用其他模块绕过检测。检索后发现:selenium_stealth 模块可以较好的支持。浏览器参数校验
from selenium import webdriver # pip3 install selenium
from selenium.webdriver.chrome.service import Service
from selenium_stealth import stealth # pip3 install selenium_stealth 需要安装该模块解决被检测的问题
from webdriver_manager.chrome import ChromeDriverManager # pip3 install webdriver_manager
import time
chrome_option = webdriver.ChromeOptions()
# chrome_option.add_argument('--headless') # 16年之后,chrome给出的解决办法,抢了PhantomJS饭碗
chrome_option.add_argument('--disable-gpu')
chrome_option.add_argument('--no-sandbox') # root用户不加这条会无法运行
chrome_option.add_argument('--local-timezone=Asia/Shanghai')
chrome_option.add_argument("start-maximized")
chrome_option.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_option.add_experimental_option('useAutomationExtension', False)
chrome_option.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # 不加载图片,加快访问速度
service = Service(ChromeDriverManager().install())
with webdriver.Chrome(service=service, options=chrome_option) as browser:
stealth(browser,
user_agent='Mozilla/5.0 (Linux; Android 10; ELS-AN00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Mobile Safari/537.36',
languages=["zh-CN", "cn"],
vendor="Google Inc.",
platform="Linux armv81",
webgl_vendor="Intel Inc.",
renderer="",
fix_hairline=True,
)
browser.get("https://ip.useragentinfo.com")
time.sleep(60)
browser.close()
资源链接: