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中的使用还有很多,我所接触的只是一星半点,之后还会给大家做进一步的分析。

猜你喜欢

转载自blog.csdn.net/qq_37046020/article/details/81321801