一.何时我们需要使用到selenium
一个普通的无特殊的网页例如http://www.baidu.com使用urllib.request.urlopen`就可以获取到网页上的数据,但是对于像有ajax [async js and xml] 异步加载的网页使用上述函数就可能出现获取到的网页上的内容和实际的网页源代码不相符的情况,此时我们使用selenium自动化测试工具,模拟出打开浏览器访问服务器的整个过程来获取网页资源就可以解决原来方式的弊端。
二.如何使用selenium
先看一段使用了selenium的代码
from selenium import webdriver
browser = webdriver.Chrome()
browser.get("http://www.baidu.com")
print(browser.page_source)
browser.close()
若在pycharm中运行该段代码,会报出一个错误,即ImportError: No module named 'selenium'
第一步:安装selenium,安装链接如下:selenium安装
+ 下载selenium-2.48.tar.gz
+ 在cmd中,进入解压路径,执行python setup.py install进行安装
+ 成功
此时再运行该段代码,可能又会在原处from selenium import webdriver报出同一个错误,但是我们已经安装了呀?...
第二步:在pycharm中,file-Default Settings-Project Interpreter,点击右上角的小齿轮,Add Local,添加磁盘上安装Python的文件夹下的python.exe,即可使用selenium
此时再运行该段代码,又会报出一个错误WebDriverException: 'chromedriver' executable needs to be in PATH
第三步:缺少chromedriver在path中,其中chromedriver是selenium驱动chrome浏览器的驱动器,没有这个驱动器是不能驱动打开chrome浏览器的
+ 在浏览器上检索'chrome://version/'能查到对应的版本号
+ 查看chrome版本与chromedriver版本的对应情况:点我查看
+ 安装chromedriver,安装地址为:安装地址.其中根据系统下载对应链接的chromedriver.
下载完成后,解压到当前文件夹,运行chromedriver.exe,若打印出only local connections are allowed,就不要管,没问题。
此时再运行该段代码,发现还是报出WebDriverException: 'chromedriver' executable needs to be in PATH的错误。
第四步:将刚解压出来的chromedriver.exe转移到Python的根目录下,注意,一定是Python的根目录下,并添加Python根目录/chromedriver.exe到Path下。
此时再运行该段代码,如果报出 selenium.common.exceptions.WebDriverException: Message: unknown error: unable to discover open pages
(Driver info: chromedriver=2.4.226107,platform=Windows NT 6.1 SP1 x86_64)的错误
第五步:该错误说明是你下载的chromedriver的版本问题,错误显示chromedriver是v2.4的,查找映射表,显示支持的chrome是v29-30,明显版本太低了,就对照映射表重新安装正确的版本
此时再运行该段代码,成功访问。
Note
介绍一种在pycharm中,手动添加chromedriver.exe到path路径的方法
path='C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe'
browser = webdriver.Chrome(executable_path=path)
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取