最近由于学习需要,在之前安装Python3.4的基础上,安装了Selenium3来为后续的学习搭建环境。
经过了1天的尝试,解决了一些问题,并成功集成两个工具。
涉及到的软件包括:
Python3.4、PyCharm、Selenium3.141.0、ChromeDriver
安装Python和Pycharm网上有很多教程,这里就不赘述。文章主要描述安装Selenium和ChromeDriver时遇到的问题及解决方案
1,安装Selenium:用Python自带的pip(3)命令在命令行安装
说明:有些Python版本可能使用pip可以安装,但是我的版本3.4,在用pip的时候报错(提示:Package 'pip' requires a different Python: 3.4.3 not in '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*'),后来改为pip3安装就成功了。
安装:pip3 install -U selenium
这个命令默认安装的是当前Python版本支持的Selenium版本,3.141.0(我使用命令安装的时候,会有一个上个版本的卸载过程。因为我安装了3.4.3版本,因此会看到下图执行的行中会有卸载命令)
查看安装结果:import selenium+help(selenium)(或者在命令行使用pip3 show selenium)
在命令行运行python进入控制台(或者直接打开python IDLE控制台),先import selenium加载Selenium,再help(selenium)查看版本,如下图:
安装指定版本:pip3 install selenium==3.4.3
以上命令加载完成后,重启IDLE来查看当前Selenium版本
2,安装 ChromeDriver
驱动下载地址:http://chromedriver.storage.googleapis.com/index.html
先查看本机Chrome的版本。再从下载地址中找到对应版本下载
说明:Chrome有自动更新功能,每次打开浏览器都会更新,建议关闭自动更新,不然还是有点麻烦的。关闭方法:服务台(services.msc)禁用两个Google更新服务:
我本机的Chrome是77.0.3865.120,因为下载地址没有对应的版本,我直接下载了最新的77版本,即77.0.3865.40
下载后解压:
下载回来的ChromeDriver,我分别放在了Chrome的安装目录:
C:\Program Files (x86)\Google\Chrome\Application
和Python的安装目录:
E:\Python34
并在环境变量Path中添加了Google安装目录:
C:\Program Files (x86)\Google\Chrome\Application
不需要运行。
至此,环境配置完成。以下便是测试了
3,验证环境是否配置成功
----打开Pycharm,新建一个项目,并New一个Python Flie
----敲入代码:
from selenium import webdriver#从Selenium模块调用webdriver
import time#调用time模块,用来创建休眠(这里也可以用from time import sleep来直接调用sleep)
driver=webdriver.Chrome()# 声明一个司机,司机是个Chrome类的对象
driver.get("http://demo.ranzhi.org")# 让司机加载一个网页
time.sleep(3)#让司机等待3秒,如果使用from time import sleep调用,这里应写成sleep(3)
# 开始登录
# 1\. 让司机找用户名的输入框(下面是用css元素定位函数进行元素定位)
we_account=driver.find_element_by_css_selector('#account')
we_account.clear()
we_account.send_keys("demo")
# 2\. 让司机找密码的输入框we_password=driver.find_element_by_css_selector('#password')
we_password.clear()we_password.send_keys("demo")
# 3\. 让司机找 登录按钮 并 单击
driver.find_element_by_css_selector('#submit').click()
time.sleep(3)
输入完毕后,运行代码块
打开链接页面并登录
登录成功后,控制台打印如下信息:
Process finished with exit code 0
至此,集成成功
可能遇到的问题:
1——selenium.common.exceptions.NoSuchElementException: Message: no such element
元素定位时出错。刚开始的时候,我的密码框定位时,少写了一个#,导致定位失败。
元素定位出错,有几方面的原因
1--网络不稳定,网速快或慢都可能导致定位失败。这时可以多尝试几遍,以上代码的time.sleep()等待时间就是为了防止自动化程序加载过快导致定位失败的问题发生。
2--定位代码本身的问题,如我上述描述的问题,就是因为定位脚本写错导致。检查一下定位脚本
可能遇到的问题2——selenium.common.exceptions.WebDriverException: Message: invalid argument:
这个问题是由于Python版本跟Selenium版本不一致导致的。我之前安装Selenium时,使用指定版本命令安装了Selenium3.4.3,导致了版本问题。重新安装默认支持版本即可(见步骤2)