环境
Windows 10 1809 LTSC Build 17763 64位
Chrome 90.0.4430.85 64位
Python 3.7.9 32位
selenium 3.141.0
pywin32 300
pyHook 1.5.1
PyUserInput 0.1.11
文件结构
D:\Project\Demo01
D:\Project\Demo01\Bats
D:\Project\Demo01\Cookies
D:\Project\Demo01\ChromeDatas
D:\Project\Demo01\Libs
D:\Project\Demo01\WebDrivers
下载 ChromeDriver
在 Chromium 官网中,根据提示下载与本地 Chrome 匹配的 ChromeDriver。
原:chromedriver.chromium.org/downloads
新(原即将弃用):sites.google.com/chromium.org/driver/downloads?authuser=0
安装依赖
pip install selenium
pip install pywin32
pip install D:\\Project\\Demo01\\libs\\pyHook-1.5.1-cp37-cp37m-win32.whl
pip install PyUserInput
简单示例
在 demo.py 文件同级目录下,新建 ChromeDatas 文件夹。
CMD 或 PowerShell 切换到 Chrome 目录,执行:
chrome.exe --remote-debugging-port=9999 --user-data-dir="%root%\ChromeDatas\demo01"
remote-debugging-port:指定远程调试端口
user-data-dir:指定用户数据目录
demo.py
import time
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
root = os.getcwd()
def start_chrome():
print('start_chrome')
bat = root + '\\Bats\\start_chrome.bat'
os.system(bat)
time.sleep(5)
def driver_control_chrome():
print('driver_control_chrome')
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9999")
chrome_driver = root + '\\WebDrivers\\chromedriver.exe'
driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)
time.sleep(1)
return driver
def main():
#start_chrome()
time.sleep(1)
driver = driver_control_chrome()
time.sleep(1)
driver.get('https://www.baidu.com')
time.sleep(1)
driver.find_element_by_id('kw').send_keys('www.yudelei.com')
time.sleep(1)
driver.find_element_by_id('1').find_element_by_tag_name('a').click()
if __name__ == '__main__':
main()
相关错误
错误一
ImportError: cannot import name ‘PyKeyboard’ from ‘pykeyboard’
pykeyboard 项目已经合并到 PyUserInput 中。
pip install PyUserInput
错误二 缺少依赖
pywin32
no module named pywin32
pip install pywin32
pyHook
no module named pyHook
依赖库:www.lfd.uci.edu/~gohlke/pythonlibs/
在依赖库中,根据相关条件,选择正确版本文件,将其下载到本地后,再进行安装。
此处,根据环境,下载到的实际文件为:pyHook-1.5.1-cp37-cp37m-win32.whl
pip install D:\\Project\\Demo01\\libs\\pyHook-1.5.1-cp37-cp37m-win32.whl
若 pip install pyhook,则安装的为支持 Python 2 的 pyhook。
错误三 依赖平台错误
ERROR: pyHook-1.5.1-cp37-cp37m-win_amd64.whl is not a supported wheel on this platform.
重新下载对应平台的依赖。
参考
chromedevtools.github.io/devtools-protocol/
github.com/PyUserInput/PyUserInput