一个用于Web应用自动化程序测试的工具,模拟用户操作浏览器。
两种模式:
一个基于 WebKit(WebKit是一个开源的浏览器引擎,Chrome,Safari就是用的这个浏览器引擎) 的服务器端 JavaScript API,
应用场景:
1、源码安装
wget https://files.pythonhosted.org/packages/d1/46/16760572785e62262da64b2624acf3b51e50a1581b14aea17aa61e145309/selenium-2.48.0.tar.gz
解压到\Python27\Lib\site-packages
2、pip安装
pip install selenium
#指定版本安装
pip install selenium==2.48.0
#查看安装版本
pip show selenium
#卸载模块
pip uninstall selenium
#安装过高版本报错
UserWarning: Selenium support for PhantomJS has been deprecated,
please use headless versions of Chrome or Firefox instead
warnings.warn('Selenium support for PhantomJS has been deprecated,
please use headless '
解决:卸载重新指定2.48.0版本安装
1、源码安装
http://phantomjs.org/download.html
解压到C:\Python27\Scripts,添加环境变量
2、pip安装
pip install PhantomJs
XPath: XML的查询语言
开头是一个斜线(/)代表这是绝对路径
开头是两个斜线(//)表示文件中所有符合模式的元素都会被选出来
使用星号(Wildcards,*)可以选择未知的元素
属性都是以@开头
Hide your heart
Bonnie Tyler
9.90
Greatest Hits
Dolly Parton
9.90
选catalog底下的cd中所有price元素可以用: /catalog/cd/price
文件中的所有元素: //*
文件中所有叫做country的属性: //@country
from selenium import webdriver
obj = webdriver.PhantomJS(executable_path="D:\Python27\Scripts\phantomjs.exe")
obj.set_page_load_timeout(5)
try:
obj.get('http://www.baidu.com')
print obj.find_element_by_id("cp").text # 获取元素的文本信息
obj.find_element_by_id('kw').clear() #用于清除输入框的内容
obj.find_element_by_id('kw').send_keys('Hello') #在输入框内输入Hello
obj.find_element_by_id('su').click() #用于点击按钮
obj.find_element_by_id('su').submit() #用于提交表单内容
except Exception as e:
print e
cd /usr/lib/python2.7/site-packages/
cat sitecustomize.py
# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
此时重启python解释器,执行sys.getdefaultencoding(),
发现编码已经被设置为utf8的了,多次重启之后,效果相同,
这是因为系统在python启动的时候,自行调用该文件,设置系统的默认编码,
而不需要每次都手动的加上解决代码,属于一劳永逸的解决方法。
参考
https://www.jianshu.com/p/45f299f9bf7c
http://www.cnblogs.com/luxiaojun/p/6144748.html
XPath http://www.cnblogs.com/hyddd/archive/2009/05/22/1487332.html
python编码问题 http://www.cnblogs.com/kevingrace/p/5893121.html