Python中selenium的使用
刚接触Python不到一个月,今天学习了selenium的使用方法,现在在这里给大家分享一下。
selenium的简介
selenium 中文翻译“硒”(别问为什么,我也很纠结) 是一个自动化测试工具。
selenium在Python中的应用:
1.用于模拟人对浏览器进行操作,对动态数据进行获取(动态数据是由代码生成,在页面初始化的过程当中是没有的,所以无法直接获取)
2.网页上有些数据是需要进行登录操作获取到cookie以后才能够获取的,比如:好友列表,评论,消费记录等 ,但是使用selenium之后可以避免进行人工登录,只需要得到账号密码即可实现登录操作
selenium的特点
1.selenium为开源、免费的,但是更新速度没有浏览器快,不是selenium更新速度慢,而是浏览器更新频率太快了,所以要注意selenium和浏览器之间的对应关系
2.使用selenium控制浏览器的时候,需要下载浏览器对应的驱动程序
3.由程序控制浏览器进行操作,而不是手动操作浏览器
4.程序控制浏览器进行操作的时候,速度非常慢,所以要谨慎使用
selenium的使用
引入selenium
#引入网页驱动
from selenium import webdriver
#使用网页驱动运行火狐浏览器
drive = webdriver.Firefox()#Chrome()为Google浏览器的驱动程序
#通过驱动执行指定的网页(例如:百度)
drive.get('http://www.baidu.com')
selenium中的方法
selenium中提供了找到网页中元素的方法:find_element_by_XXX;例如:
在百度首页中获取输入框
代码实现方法有很多,请参考下图:
#通过网页源码中标签内的id进行查找
dirver.find_element_by_id('kw')
#通过标签的name值进行查找
dirver.find_element_by_name('wd')
#通过标签名字进行查找
dirver.find_element_by_tag_name('input')
#通过selectior进行查找 (#XX 代表id .XX 代表类名)
dirver.find_element_by_css_selector(#kw)
#通过xpath语法定位元素
dirver.find_element_by_xpath('//form[@id="form"]/span/input[@id="kw"]')
#通过link获取
driver.find_element_by_link_text('贴吧')
#关闭浏览器
driver.close()
在执行代码的时候,总是报出
错误原因:代码执行速度很快,但是浏览器响应很慢,在代码执行到这里的时候,浏览器里面的元素可能还没有加载完,所以报错找不到指定的元素。
解决方法:可以在在方法执行前调用time.sleep(),给网页加载一些时间,虽然不能够完全避免错误的发生,但是能够减少错误的发生;
还有一种方法:使用WebDriverWait
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
drive = webdriver.Firefox()#Chrome()
drive.get('http://www.baidu.com')
input_box = driver.find_element_by_css_selectio(#kw)
WebDriver(driver , 10).until(lambda driver:input_box.is_displayed())
ActionChains(driver).double_click(input_box).perform()
使其在代码运行的同时判断网页指定内容是否加载出来,并给加载内容添加休眠时间,来避免错误的出现。
结束
selenium在Python中的使用还有很多,我所接触的只是一星半点,之后还会给大家做进一步的分析。
下一篇: POJ 1471Triangles