selenium+phantomJS学习使用记录
背景知识: phantomjs是一个基于webkit的没有界面的浏览器,所以运行起来比完整的浏览器要高效。 selenium是一个测试web应用的工具,目前是2.42.1版本,和1版的区别在于2.0+中把WebDrive整合在了一起。 selenium2支持的Python版本:2.7, 3.2, 3.3 and 3.4 如果需要进行远程操作的话,就需要额外安装selenium server 安装: 先装selenium2,哪种方式装都可以,我一般都是直接下载压缩包,然后用python setup.py install命令来装,selenium 2.42.1的下载地址:https://pypi.python.org/pypi/selenium/2.42.1 然后下载phantomjs,https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-windows.zip,解压后可以看到一个phantomjs.exe的文件 范例1: #coding=utf-8 其中的executable_path就是刚才phantomjs.exe的路径,运行结果: https://duckduckgo.com/?q=Nirvana Walk through of the example: 值得一提的是: get方法会一直等到页面被完全加载,然后才会继续程序 但是对于ajax: It’s worth noting that if your page uses a lot of AJAX on load then WebDriver may not know when it has completely loaded send_keys就是填充input 范例2: #coding=utf-8 这个程序完成的是,登陆知乎,然后能自动点击页面下方的“更多”,以载入更多的内容 Walk through of the example: from selenium.webdriver.common.keys import Keys,keys这个类就是键盘上的键,文中的send_keys(Keys.RETURN)就是按一个回车 from selenium.webdriver.support.ui import WebDriverWait是为了后面一个等待的操作 from selenium.webdriver import ActionChains是导入一个动作的类,这句话的写法,我找了很久 find_element推荐使用Xpath的方法,原因在于:逼格高,而且真的非常非常方便 Xpath表达式写法教程:http://www.ruanyifeng.com/blog/2009/07/xpath_path_expressions.html 值得注意的是,避免选择value带有空格的属性,譬如class = "country name"这种,不然会报错,大概compound class之类的错 检查用户密码是否输入正确的方法就是在填入后截屏看看 想要截屏,这么一句话就行: driver.get_screenshot_as_file(‘show.png‘) 但是,这里的截屏是不带滚动条的,就是给你把整个页面全部照下来 try: 是用来通过检查某个元素是否被加载来检查是否登录成功,我认为当个黑盒子用就可以了。其中5的解释:5秒内每隔500毫秒扫描1次页面变化,直到指定的元素 对于表单的提交,即可以选择登录按钮然后使用click方法,也可以选择表单然后使用submit方法,后者能应付没有登录按钮的情况,所以推荐使用submit() 对于一次点击,既可以使用click(),也可以使用一连串的action来实现,如文中: loadmore=driver.find_element_by_xpath(‘//a[@id="zh-load-more"]‘) 这5句话其实就相当于一句话,find element然后click,但是action的适用范围更广,譬如在这个例子中,要点击的是一个a标签对象,我不知道为什么直接用click不行,不起作用 print driver.current_url 打印网页的两个属性:url和source 参考文献: http://selenium-python.readthedocs.org/getting-started.html http://www.ruanyifeng.com/blog/2009/07/xpath_path_expressions.html |
phantomJS设置头部的userAgent
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = (
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0 "
) driver = webdriver.PhantomJS(executable_path='./phantomjs', desired_capabilities=dcap)
driver.get("http://dianping.com/")
cap_dict = driver.desired_capabilities
for key in cap_dict:
print '%s: %s' % (key, cap_dict[key])
print driver.current_url
driver.quit
查看是否成功
agent = browser.execute_script("return navigator.userAgent")
print agent
最新文章
- C# RabbitMq .net 使用
- LNAMP服务器环境搭建(手动编译安装)
- 深入理解javascript函数系列第三篇——属性和方法
- 解决在MainPage中,点击实体返回按键不能退出的问题
- Java 前端加密传输后端解密以及验证码功能
- mybatis+spring+struts2框架整合
- MMC卡是什么
- image元素的src属性值与getAttribute('src')值
- 使用JavaMail发送和接收电子邮件
- ibatis 学习笔记 3 - pfpfpfpfpf的专栏 - 博客频道 - CSDN.NET
- Zookeeper启动时报8080端口被占用
- bind,apply,call区别总结
- 速卖通AE平台+聚石塔+奇门 完整教程V2
- Archlinux无线联网教程
- (三十七)从私人通讯录引出的细节I -Notification -Segue -HUD -延时
- 关于iOS刷新UI需要在主线程执行
- Android 与Java 进程退出 killProcess与System.exit
- Linux 常用命令——文件处理命令
- HZNU_TI1050 训练实录
- 二维码名片的格式 - vcard(非常好,可直接添加到手机通讯录)