python+selenium环境搭建
Posted 贝塔&β
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python+selenium环境搭建相关的知识,希望对你有一定的参考价值。
我使用的是win10系统,将要搭建的版本分别是:python版本-3.7.0,selenium版本-3.14.1,火狐浏览器版本-61.0.2,geckodriver版本-0.21.0 现在开始搭建环境
第一步、下载Python,安装Python,并添加到环境变量(我下载的是python3.7.0 红框只是举个栗子)
官网下载地址:https://www.python.org/downloads/windows/
安装完后,打开运行,输入cmd,输入python,出现如下图所示表示安装成功
如果安装时没有勾选Add Python3.7 to PATH,需要手动添加到环境变量
在桌面右键我的电脑,点击属性,选择高级系统设置,点击环境变量,选择Path新建,把pathon路径添加进去,下面是我的电脑安装的路径
C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\Scripts\\ #这个是为了方便在cmd使用pip安装,而不用切换到pip所在的目录
C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\
第二步、安装selenium,输入pip install selenium(pip install selenium==3.0.1,可以下载指定版本的selenium),回车
这里提示让更新pip版本,可以按照提示所说的更新,输入:python -m pip install --upgrade pip
输入pip show seleium,可以查看安装的selenium的版本,如下图
第三步、下载火狐浏览器并配置驱动
火狐浏览器直接官网下载最新的,如果不想用最新的则可以到这个网站下载历史版本:http://ftp.mozilla.org/pub/firefox/releases/
选择想要下载的版本--选择win64--选择zh-CN/,进行下载(注意:把火狐浏览器的自动更新关掉,避免火狐浏览器自动更新后驱动不兼容的问题)
下载驱动文件,官网下载地址:https://github.com/mozilla/geckodriver/releases/
把下载的文件放到python的安装目录,如下图(当然,也可以放在别的目录里,但是必需要把驱动所在的目录添加到环境变量)
(打开cmd,输入geckodriver -V查看驱动版本)
验证环境:打开cmd,输入以下代码
python
from selenium import webdriver
bro = webdriver.Firefox()
浏览器正常打开
第四步、安装Pycharm,并激活
链接: https://pan.baidu.com/s/1_CLo_CUC9c8lpZyWQkKjLA 提取码: 6mx8
安装完后,打开输入激活码并进行激活,pycharm激活码链接:https://blog.csdn.net/u013066730/article/details/56966966
点击创建新项目,到下图的页面
至此,环境搭建完毕。
这里说一下踩到的雷:
刚开始搭建环境使用的版本分别是:selenium -3.14.0 geckodriver-0.11.1 Firefox-47.0.2
在运行一段代码时
ActionChains(bro).move_to_element(ele).perform()#使鼠标移动到指定元素
报错:actions did not match a known command
查询百度后说是火狐和geckodriver的一个bug,更新下火狐和geckodriver的版本即可
另外firebug已经内置到火狐50.0以上的版本,所以查看页面元素可以直接右上角点击三条横杠,选择web开发者点击查看器查看页面元素
如果是火狐50.0以下版本,则需要下载firebug组件,火狐浏览器点击选项在附加组件管理里,搜索框输入firebug下载
下面是一个百度登陆退出的例子:
#coding = utf-8 from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import time import os browser = webdriver.Firefox() #browser.minimize_window()#浏览器最小化 browser.maximize_window()#将浏览器最大化显示。调用浏览器假如不是全屏,也不会影响脚本的执行 browser.get("https://www.baidu.com") browser.implicitly_wait(8)#智能等待8秒 browser.find_element_by_css_selector("#u1 > a[name=\'tj_login\']").click()#点击登录 time.sleep(2) browser.find_element_by_id("TANGRAM__PSP_10__footerULoginBtn").click()#点击用户名登录 time.sleep(2) user = browser.find_element_by_id("TANGRAM__PSP_10__userName").get_attribute("placeholder")#获取节点属性的值 assert user=="手机/邮箱/用户名"#断言属性的值等于引号里的值 browser.find_element_by_id("TANGRAM__PSP_10__submit").click()#不输入用户名直接点击登录按钮 try: msg = browser.find_element_by_id("TANGRAM__PSP_10__error").text#获取当前元素的属性值 assert msg == "请您输入手机/邮箱/用户名"#assert断言,msg等等与引号中的值 #print("出现提示 :%s"%msg)#打印msg信息 with open("loger.txt", "a+",encoding="utf-8") as f:#loger.txt文件若不存在就创建,并设置utf-8编码 print(msg,file=f)#把错误信息追加到log文件 except Exception:#Exception是常规错误的基类,也可以不带任何异常类型 print("未出现提示") browser.find_element_by_id("TANGRAM__PSP_10__userName").clear()# 清空用户名 browser.find_element_by_id("TANGRAM__PSP_10__userName").send_keys("xxx")#输入用户名 browser.find_element_by_id("TANGRAM__PSP_10__password").send_keys("xxx")#输入登录密码 browser.find_element_by_id("TANGRAM__PSP_10__submit").click()#点击登录按钮 time.sleep(10) ele = browser.find_element_by_css_selector("span.user-name") ActionChains(browser).move_to_element(ele).perform()#移动鼠标到用户名 time.sleep(2) browser.find_element_by_link_text("退出").is_displayed() browser.find_element_by_link_text("退出").click() time.sleep(5) browser.find_element_by_link_text("确定").click() time.sleep(3) print(browser.title,file=f) value = browser.find_element_by_css_selector("#u1 > a[name=\'tj_login").text if value=="登录": print("测试通过",file=f) browser.quit()
以上是关于python+selenium环境搭建的主要内容,如果未能解决你的问题,请参考以下文章
selenium自动化实战-基于python语言(环境搭建)