在Android的Pydroid3中运行Selenium操控Chrome报错求助
解决安卓Pydroid3中Selenium操控Chrome的问题
核心问题分析
你下载的chromedriver_linux64.zip是x86_64架构版本,而三星S10采用ARM64(aarch64)架构,驱动与设备不兼容导致启动失败,进而触发Service对象的属性错误。同时安卓环境下Chrome的启动需要补充特定配置参数。
解决步骤
1. 替换为ARM64架构的ChromeDriver
下载与你的Chrome版本(108.0.5359.128)匹配的ARM64版本ChromeDriver,解压后将chromedriver文件放到脚本同目录,确保Pydroid3能读取该文件。
2. 修正脚本配置
使用以下适配安卓环境的脚本,补充必要参数并确保驱动权限正常:
from selenium import webdriver from selenium.webdriver.chrome.service import Service import os # 获取chromedriver路径 path_to_chromedriver = os.path.join(os.path.dirname(__file__), 'chromedriver') # 给驱动添加可执行权限(安卓环境必需) os.chmod(path_to_chromedriver, 0o755) print('path_to_chromedriver: ', path_to_chromedriver) options = webdriver.ChromeOptions() # 指定安卓Chrome包名 options.add_experimental_option('androidPackage', 'com.android.chrome') # 复用已运行的Chrome实例 options.add_experimental_option('androidUseRunningApp', True) # 禁用沙箱模式(安卓环境必需) options.add_argument('--no-sandbox') # 禁用GPU加速(部分设备需此参数) options.add_argument('--disable-gpu') service = Service(path_to_chromedriver) driver = webdriver.Chrome(service=service, options=options) try: driver.get('https://google.com') # 在此添加你的业务操作逻辑 finally: driver.quit()
3. 配置Chrome调试权限
- 打开手机Chrome,访问
chrome://flags,找到Enable remote debugging选项,设置为Enabled后重启Chrome - 确保脚本运行时Chrome处于后台或前台运行状态,避免被系统杀死
替代方案:改用Kiwi浏览器
如果Chrome仍无法正常配合运行,可尝试兼容性更好的Kiwi浏览器:
- 安装Kiwi浏览器,获取其包名
com.kiwibrowser.browser - 下载对应版本的ARM64 ChromeDriver
- 将脚本中的
androidPackage参数改为com.kiwibrowser.browser,其余配置不变
排查要点
- 若出现权限错误:在Pydroid3设置中开启存储权限和后台运行权限
- 若驱动启动失败:通过Pydroid3终端执行
file chromedriver,确认输出包含aarch64,验证驱动架构是否匹配
内容的提问来源于stack exchange,提问作者Fobi
相关产品推荐
相关产品推荐

