python+pycharm自动化安装配置基础以及页面常用函数
一、Python-3.6.0.exe安装
1.根据提示安装exe程序;
2.配置环境变量:
2.1 右键点击"计算机",然后点击"属性"
2.2 然后点击"高级系统设置"
2.3 选择"系统变量"窗口下面的"Path",双击即可!
2.4 然后在“Path”行,添加python安装路径即可(我的D:\Python32),所以在后面,
添加该路径即可。 ps:记住,路径直接用分号";"隔开!
2.5 最后设置成功以后,在cmd命令行,输入命令"python",就可以有相关显示。
Ps: Python2.x版本和Python版本差异较大,本文仅介绍Python3.x
二、PyCharm 编译器安装
1.根据提示安装PyCharm
2.安装需要的库函数
文件->设置->项目: ->Project Interpreter ->右上角+号->搜索需要的库函数->选中
要安装的包->Install Package
3.常用的库函数:serial R232串口操作函数
pyserial 与serial配合使用
time 时间函数
datetime 获取系统时间函数
splinter Web操作函数
PyAutoGUI 鼠标操作函数
Re 正则匹配函数
三、WEB操作插件安装:
火狐&谷歌浏览器插件:
Python进行网页操作需要安装对应浏览器以及插件进行配合使用,之前环境搭建章节有做说明,此处再做详细讲解。
火狐浏览器:
1.下载Firfox 58.0.2并安装;
2.将安装路径添加到系统环境变量path中;
3.下载geckodriver V0.16.1版本,将其解压到Firfox安装路径下;
4. geckodriver下载地址 :https://github.com/mozilla/geckodriver/releases;
5. 需要注意的是,浏览器的版本与geckodriver插件版本必须一一对应,否则Python将无法调用火狐浏览器。
谷歌浏览器:
1.下载chrome 65.0.3325.181版本并安装;
2.将安装路径添加到系统环境变量path中;
3.下载chromedriver V2.36/V2.37版本,将其解压到Chrome安装路径下;
4. chromedriver下载地址:http://chromedriver.storage.googleapis.com/index.html;
5.需要注意的是,浏览器的版本与chromedriver插件版本必须一一对应,否则Python将无法调用谷歌浏览器。
Firefox与对应的geckodriver, chrome与对应的Chromedriver:
chrome与对应的Chromedriver:
chromedriver版本 |
支持的Chrome版本 |
v2.43 |
v69-71 |
v2.42 |
v68-70 |
v2.41 |
v67-69 |
v2.40 |
v66-68 |
v2.39 |
v66-68 |
chromedriver版本 |
支持的Chrome版本 |
v2.38 |
v65-67 |
v2.37 |
v64-66 |
v2.36 |
v63-65 |
v2.35 |
v62-64 |
v2.34 |
v61-63 |
v2.33 |
v60-62 |
v2.32 |
v59-61 |
v2.38 |
v65-67 |
v2.37 |
v64-66 |
v2.31 |
v58-60 |
v2.30 |
v58-60 |
四、调用浏览器的库函数
Splinter调用浏览器:
1.脚本加载库函数
form splinter import Browser #直接调用Browser()即可
或
import splinter #使用splinter.Browser()调用
2.调用方法
使用火狐浏览器
browser=Browser(‘firefox’)
browser=visit(“https://www.baidu.com/”)
使用谷歌浏览器
browser=Browser(‘chrome’)
browser=visit(“https://www.baidu.com/”)
Splinter常用的定位元素Api
>>browser.find_by_css(‘.h1’)
>>browser.find_by_xpath(‘//h1’)
>>browser.find_by_tag(‘h1’)
>>browser.find_by_name(‘name’)
>>browser.find_by_value(‘query’)
>>browser.find_by_id(‘firstheader’)
Splinter填充输入框语句:
>>fill(“字符串”)
例:
>> browser.find_by_id(‘kw’).clear() #清空输入框
>>browser.find_by_id(‘kw’).fill(“Python”)
Splinter点击按钮语句:
>>click()
例:
>> browser.find_by_id(‘su’). click()
Selenium调用浏览器:
1.脚本加载库函数
form selenium import webdriver #直接调用webdriver即可
或
import selenium #使用selenium.webdriver调用
2.调用方法
使用火狐浏览器
driver=webdriver.Firefox()
drver=driver.maximize_window() #将浏览器最大化,splinter无此功能
driver.get(“https://www.baidu.com/”)
使用谷歌浏览器
driver=webdriver.Chrome()
drver=driver.maximize_window() #将浏览器最大化,splinter无此功能
driver.get(“https://www.baidu.com/”)
Selenium常用的定位元素Api
>>driver. find_element_by_css(‘.h1’)
>>driver.find_element _by_xpath(‘//h1’)
>>driver.find_element _by_tag(‘h1’)
>>driver.find_element _by_name(‘name’)
>>driver.find_element _by_value(‘query’)
>>driver.find_element _by_id(‘firstheader’)
Selenium填充输入框语句:
>>send_keys(“字符串”)
例:
>>driver.find_element _by_id(‘kw’).clear() #清空输入框
>>driver.find_element _by_id(‘kw’).send_keys(“Python”)
Selenium点击按钮语句:
>>click()
例:
>> driver.find_element _by_id(‘su’). click()
当网站证书不全时可以使用ssl函数
>>import ssl
>> ssl._create_default_https_context = ssl._create_unverified_context
#用于取消SSL认证
splinter与selenium的区别:
1.等待网页加载:
Splinter只能使用强制等待àtime.sleep()
Selenium可以使用三种等待方式à显式等待、隐式等待、强制等待
显式等待是你定义的一段代码,用于等待某个条件发生然后再继续执行后续代码。显式等待是等元素加载!!!
隐式等待,相当于设置全局的等待,在定位元素时,对所有元素设置超时时间。隐式等待是等页面加载,而不是元素加载!!!(隐式等待就是针对页面的,显式等待是针对元素的。)
常用隐式等待: driver.implicitly_wait(10) #仅限chrome浏览器
2.页面最大化
Splinter无法将浏览器页面最大化;
Selenium可以将浏览器页面最大化,语句如下:
driver.maximize_window() # 将浏览器最大化
Pyautogui函数加载
>>import pyautogui
鼠标操作方法:
>>pyautogui.moveRel(100,0,duration=0.25) ####移动鼠标到相应的位置
>>import pyautogui
>>pyautogui.click(100,150,button='left') ####在相应位置点击鼠标左键
>>pyautogui.click(100,150,button='right') ####将在相应位置点击鼠标右键
>>pyautogui.mouseDown() ####按下鼠标按键
>>pyautogui.mouseDown() ####释放鼠标按键
>>pyautogui.doubleClick() ####执行双击鼠标左键
>>pyautogui.rightClick() ####执行双击右键
>>pyautogui.middleClick() ####执行双击中键
网页操作脚本执行注意事项:
1.需安装火狐或谷歌浏览器以及对应的插件实现网页自动化
2.网页自动化涉及鼠标操作,故执行脚本不可操作鼠标
3.执行脚本时屏幕不可锁屏、睡眠等(网页操作时,需获取相应元素的xpath)
4.浏览器注意设置为不检查更新,否则浏览器更新后版本与插件版本不一致将导致脚本无法运行;
5.注意区分splinter与selenium,切忌混合使用。