【Python爬虫】selenium框架

selenium框架

Selenium is an umbrella project for a range of tools and libraries that enable and support the automation of web browsers.

It provides extensions to emulate user interaction with browsers, a distribution server for scaling browser allocation, and the infrastructure for implementations of the W3C WebDriver specification that lets you write interchangeable code for all major web browsers.

                                                                  ————选自官方文档

一个自动化测试的框架

webdriver

支持各大主流浏览器,下载相关驱动,并添加到环境变量中

启动浏览器

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
# 有界面启动
driver=webdriver.Firefox()
driver.get('https://www.baidu.com')

# 无界面启动
option=Options()
option.add_argument('--headless')
driver=webdriver.Firefox(firefox_options=option)
driver.get('https://www.baidu.com')

driver.page_source查看源码

driver.get_cookiedriver.get_cookies获取服务器返回的cookie信息

执行js代码

# 将页面滑动到最底部
driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
# 执行异步js函数
driver.execute_async_script('ssss()')

控制浏览器

driver的常用使用方式

#访问某个url
driver.get('https://www.baidu.com')
# 刷新
driver.refresh()
# 前进
driver.forward()
# 后退
driver.back()
# 退出
driver.quit()
# 当前的url
driver.current_url
# 保存截图
driver.save_screenshot('a.png')

查找方式

# find_element(by='id', value=None),例如driver.find_element(By.ID, 'foo')
'find_element',
# 根据元素的CSS属性查找
'find_element_by_class_name',
# 根据CSS选择器查找
'find_element_by_css_selector',
# 通过id查找
'find_element_by_id',
# 链接内的文本
'find_element_by_link_text',
# name属性
'find_element_by_name',
# 通过其链接文本的部分匹配查找元素
'find_element_by_partial_link_text',
# 标签名
'find_element_by_tag_name',
# 通过xpath查找
'find_element_by_xpath'

在element后加s,是查找相关元素的列表

等待

直接等待

# 不管是否查找到直接等待3秒
time.sleep(3)

隐式等待

# 如果没有查找到元素,最长等待10秒
driver.implicitly_wait(10)

显示等待

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 查找一个元素
# 直到找到指定元素
kw=WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'kw')))

webelement

一堆find查找方法,和driver用法一样

kw.text返回元素内的文本信息

button.click()点击button元素

kw.send_keys('Python')添加键盘事件,向kw标签输入python

向kw标签发送回车键

from selenium.webdriver.common.keys import Keys
kw.send_keys(Keys.RETURN)

rect返回元素的宽和高,以及在屏幕上的坐标

>>> kw.rect
{'x': 129.0, 'y': 18.0, 'width': 494.0, 'height': 22.0}

location返回在屏幕上的坐标

>>> kw.location
{'x': 129, 'y': 18}

img.get_attribute('src')img.get_property('src')用于获取标签的属性值,获取img标签的src属性

kw.value_of_css_property获取标签CSS样式属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值