欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python中selenium的使用

程序员文章站 2022-07-14 08:53:52
...

刚接触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;例如:
在百度首页中获取输入框
Python中selenium的使用
代码实现方法有很多,请参考下图:

#通过网页源码中标签内的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()

在执行代码的时候,总是报出Python中selenium的使用
错误原因:代码执行速度很快,但是浏览器响应很慢,在代码执行到这里的时候,浏览器里面的元素可能还没有加载完,所以报错找不到指定的元素。
解决方法:可以在在方法执行前调用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中的使用还有很多,我所接触的只是一星半点,之后还会给大家做进一步的分析。