Selenium Python设置options.platform_name报错:无匹配会话功能
问题解决:添加platform_name后触发"No matching capabilities found"错误
环境版本信息
- chromedriver版本:125.0.6422.141 (r1287751) (64位)
- Chrome版本:125.0.6422.142 (官方版本) (64位)
- Selenium版本:4.21.0
相关代码
from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Options import time options = webdriver.ChromeOptions() options.add_argument("--disable-blink-features=AutomationControlled") options.platform_name = 'Windows 10' service = ChromeService(executable_path=r'C:\Users\rr\Desktop\TL\chromedriver.exe') browser = webdriver.Chrome(options=options) browser.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Mozilla/5.0 (Android; Android 4.4.1; LG-F500L Build/KOT49H) AppleWebKit/601.44 (KHTML, like Gecko) Chrome/54.0.3656.325 Mobile Safari/602.8'}) browser.set_window_size(393, 851) url = "https://www.google.com/" browser.get(url)
问题现象
- 删掉代码里的
options.platform_name = 'Windows 10',程序能正常运行 - 加上这句话后,直接抛出错误:
Message=Message: session not created: No matching capabilities found
堆栈跟踪
GetHandleVerifier [0x00007FF612EC1F52+60322] (No symbol) [0x00007FF612E3CEC9] (No symbol) [0x00007FF612CF7EBA] (No symbol) [0x00007FF612D7632C] (No symbol) [0x00007FF612D75451] (No symbol) [0x00007FF612D770BC] (No symbol) [0x00007FF612D76F90] (No symbol) [0x00007FF612D6BFC3] (No symbol) [0x00007FF612D39617] (No symbol) [0x00007FF612D3A211] GetHandleVerifier [0x00007FF6131D94AD+3301629] GetHandleVerifier [0x00007FF6132236D3+3605283] GetHandleVerifier [0x00007FF613219450+3563680] GetHandleVerifier [0x00007FF612F74326+790390] (No symbol) [0x00007FF612E4750F] (No symbol) [0x00007FF612E43404] (No symbol) [0x00007FF612E43592] (No symbol) [0x00007FF612E32F9F] BaseThreadInitThunk [0x00007FFDB1417344+20] RtlUserThreadStart [0x00007FFDB30E26B1+33]
原因分析
Selenium 4+遵循W3C规范,platform_name属于会话能力的严格匹配项。你手动指定了Windows 10平台,但同时通过CDP设置了Android设备的User-Agent,两者平台属性冲突,ChromeDriver找不到同时满足这两个条件的会话,因此抛出错误。
解决方法
方案1:移除手动指定的platform_name
Selenium会自动检测当前运行的系统平台,完全不需要手动设置platform_name,删掉这行代码即可恢复正常。
方案2:保证平台与User-Agent一致
如果确实需要设置平台信息,必须让platform_name和User-Agent的平台属性匹配:
- 若要保留Android的User-Agent,将
platform_name改为"Android" - 若要使用Windows 10平台,需把User-Agent替换为Windows版本的(比如
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36)
示例代码(保留Android UA的修改版):
from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService import time options = webdriver.ChromeOptions() options.add_argument("--disable-blink-features=AutomationControlled") options.platform_name = 'Android' # 与UA平台匹配 service = ChromeService(executable_path=r'C:\Users\rr\Desktop\TL\chromedriver.exe') browser = webdriver.Chrome(options=options) browser.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Mozilla/5.0 (Android; Android 4.4.1; LG-F500L Build/KOT49H) AppleWebKit/601.44 (KHTML, like Gecko) Chrome/54.0.3656.325 Mobile Safari/602.8'}) browser.set_window_size(393, 851) url = "https://www.google.com/" browser.get(url)
内容的提问来源于stack exchange,提问作者0.0
相关产品推荐
相关产品推荐

