wsl设置chromedriver.exe环境变量调用windows下的chromedriver及chrome浏览器进行自动化测试或爬取网页内容

wsl设置chromedriver.exe环境变量调用windows下的chromedriver及chrome浏览器进行自动化测试或爬取网页内容

前言

为啥要用wsl呢?大家应该都知道理由了,启动速度快,占用内存小,还能直接调用windows的各种资源,在平常不使用linux的时候可以安心享受windows的便利,这么方便的工具就是我用它的原因了。

然后近来想学习一些selenium这样的浏览器自动化测试工具,每次将驱动chromedriver.exe放在脚本目录肯定很不方便了,所以才想要设置chromedriver.exe环境变量,从而使python可以自动去找到驱动器,那就方便多了。

但是在这个过程中遇到了困难,网上居然也没有什么有效的解决方案,就自己写了。

我只讲我的环境,也就是chromedriver的设置方法,其他浏览器设置方法都类似。

环境及工具包

  • 主系统:win10
  • 子系统:Ubuntu 18
  • wsl调用
  • chromedriver.exe驱动及chrome浏览器

解决方法

1.windows下加环境变量

本来是打算在Linux中直接设置环境变量的,然后发现其实wsl 2.0已经直接和windows中的环境变量互通了,所以直接在windows中设置环境变量即可:

我的电脑-右键属性-高级系统设置-环境变量-系统变量中的Path

直接添加一条路径:{chromedriver.exe驱动所在的文件夹},如下:

wsl设置chromedriver.exe环境变量调用windows下的chromedriver及chrome浏览器进行自动化测试或爬取网页内容

然后确定,wsl就可以直接读取到环境变量,可以用以下语句检测验证:

echo $PATH

如果没有下载chromedriver驱动的话直接去下面网址找相应版本下载,不过我想应该不会吧:

https://sites.google.com/a/chromium.org/chromedriver/downloads

2.添加软链接

经过上面的步骤之后其实windows已经能正确找到chromedriver.exe的位置并且运行了,如果用windows上的python解析器其实已经可以正常解析了,但是问题是,我的python解析器在Linux子!系!统!上!,这样就无法正常识别使用驱动。

其实wsl是可以直接识别并运行exe文件的,直接在wsl中输入notepad.exe就可以跳出记事本的界面:
wsl设置chromedriver.exe环境变量调用windows下的chromedriver及chrome浏览器进行自动化测试或爬取网页内容

这点我觉得碉堡了,子系统可以直接调用windows上的可执行文件并且在windows上的图形化界面中显示出来,但是没办法啊,奈何wsl还是linux的本质啊,linux中带.exe后缀的软件并不是可执行文件,这也就造成了wsl虽然能够执行exe文件,但是不会把它当作可执行文件

所以,在wsl中的python解析器在执行时会找chromedriver,而不是chromedriver.exe!

随便一个python测试脚本:

from selenium import webdriver
driver = webdriver.Chrome()

执行脚本就会有这样的报错:

wsl设置chromedriver.exe环境变量调用windows下的chromedriver及chrome浏览器进行自动化测试或爬取网页内容

即找不到路径。

解决方法倒也简单,直接在驱动器目录下创建一个名为chromedriver,并且指向chromedriver.exe的软链接即可(我真是个小机灵鬼):

cd 驱动目录路径
ln -s chromedriver.exe chromedriver

这样,在进行导入就不会再报错了:

wsl设置chromedriver.exe环境变量调用windows下的chromedriver及chrome浏览器进行自动化测试或爬取网页内容

上一篇:开机自启Windows子系统WSL的守护进程


下一篇:Win10 的 Ubuntu子系统安装可视化图形界面