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,需要手动添加到环境变量

扫描二维码关注公众号,回复: 3440170 查看本文章

在桌面右键我的电脑,点击属性,选择高级系统设置,点击环境变量,选择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()
View Code

猜你喜欢

转载自www.cnblogs.com/Mac-C/p/9746202.html