赞
踩
from selenium import webdriver
driver = webdriver.Firefox() # Firefox浏览器
driver = webdriver.Chrome() # Chrome浏览器
driver = webdriver.Ie() # Internet Explorer浏览器
driver = webdriver.Edge() # Edge浏览器
driver = webdriver.Opera() # Opera浏览器
driver = webdriver.PhantomJS() # PhantomJS
二、 基本语法
=======
1、 元素定位
=======
元素定位语法
常用语法:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()
在 element 变成 elements 时,返回符合条件的所有元素组成的数组
2、 控制浏览器操作
==========
控制浏览器大小
浏览器后退,前进
driver.forward()
driver.back()
刷新
3、 操作元素的方法
==========
3.1 点击和输入
=========
driver.find_element_by_id(“kw”).clear() # 清空文本
driver.find_element_by_id(“kw”).send_keys(“selenium”) # 模拟按键输入
driver.find_element_by_id(“su”).click() # 单击元素
3.2 提交
======
在搜索框模拟回车操作
search_text = driver.find_element_by_id(‘kw’) search_text.send_keys(‘selenium’) search_text.submit() # 模拟回车操作
3.3 其他
======
drive.size # 返回元素的尺寸
drive.text # 获取元素的文本
drive.get_attribute(name) # 获得属性值
drive.is_displayed() # 设置该元素是否用户可见
drive.page_source # 获取网页源代码
4、 鼠标操作
=======
在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供
ActionChains 类提供了鼠标操作的常用方法:
click(on_element=None) ——单击鼠标左键
click_and_hold(on_element=None) ——点击鼠标左键,不松开
context_click(on_element=None) ——点击鼠标右键
double_click(on_element=None) ——双击鼠标左键
drag_and_drop(source, target) ——拖拽到某个元素然后松开
drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开
key_down(value, element=None) ——按下某个键盘上的键
key_up(value, element=None) ——松开某个键
move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标
move_to_element(to_element) ——鼠标移动到某个元素
move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置
perform() ——执行链中的所有动作
release(on_element=None) ——在某个元素位置松开鼠标左键
send_keys(*keys_to_send) ——发送某个键到当前焦点的元素
send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素
语法:
from selenium.webdriver.common.action_chains import ActionChains
menu = driver.find_element_by_css_selector(“.nav”)
hidden_submenu = driver.find_element_by_css_selector(“.nav #submenu1”)
ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
actions.perform()
5、 键盘操作
=======
想使用selenium中的键盘事件,首先我们必须导入Keys包,需要注意的是包名称Keys首字母需要大写。Keys类中提供了几乎所有的键盘事件包括组合按键如 Ctrl+A、 Ctrl+C 等
使用语法:
from selenium.webdriver.common.keys import Keys
element.send_keys(键盘事件)
Keys.BACK_SPACE # 回退键(BackSpace)
Keys.TAB # 制表键(Tab)
Keys.ENTER # 回车键(Enter)
Keys.SHIFT # 大小写转换键(Shift)
Keys.CONTROL # Control键(Ctrl)
Keys.ALT # ALT键(Alt)
Keys.ESCAPE # 返回键(Esc)
Keys.SPACE # 空格键(Space)
Keys.PAGE_UP # 翻页键上(Page Up)
Keys.PAGE_DOWN # 翻页键下(Page Down)
Keys.END # 行尾键(End)
Keys.HOME # 行首键(Home)
Keys.LEFT # 方向键左(Left)
Keys.UP # 方向键上(Up)
Keys.RIGHT # 方向键右(Right)
Keys.DOWN # 方向键下(Down)
Keys.INSERT # 插入键(Insert)
DELETE # 删除键(Delete)
NUMPAD0 ~ NUMPAD9 # 数字键1-9
Keys.F5 # 刷新键
F1 ~ F12 # F1 - F12键
(Keys.CONTROL, ‘a’) # 组合键Control+a,全选
(Keys.CONTROL, ‘c’) # 组合键Control+c,复制
(Keys.CONTROL, ‘x’) # 组合键Control+x,剪切
(Keys.CONTROL, ‘v’) # 组合键Control+v,粘贴
其他事件可以通过查看源码获取
6、 获取断言信息
=========
title = driver.title # 打印当前页面title
now_url = driver.current_url # 打印当前页面URL
user = driver.find_element_by_class_name(‘nums’).text # # 获取结果数目
7、 等待页面加载完成
===========
7.1 显示等待
========
显式等待使WebdDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常
实例:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
driver = webdriver.Firefox()
driver.get(“http://www.baidu.com”)
element = WebDriverWait(driver, 5, 0.5).until(
expected_conditions.presence_of_element_located((By.ID, “kw”))
) # expected_conditions.presence_of_element_located()方法判断元素是否存在
element.send_keys(‘selenium’)
driver.quit()
WebDriverWait类是由WebDirver 提供的等待方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常
语法:
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
参数:
driver :浏览器驱动
timeout :最长超时时间,默认以秒为单位
poll_frequency :检测的间隔(步长)时间,默认为0.5S
ignored_exceptions :超时后的异常信息,默认情况下抛NoSuchElementException异常
WebDriverWait()一般由until()或until_not()方法配合使用until(method, message=‘’) :调用该方法提供的驱动程序作为一个参数,直到返回值为Trueuntil_not(method, message=‘’): 调用该方法提供的驱动程序作为一个参数,直到返回值为False
7.2 隐式等待
========
如果某些元素不是立即可用的,隐式等待是告诉WebDriver去等待一定的时间后去查找元素。 默认等待时间是0秒,一旦设置该值,隐式等待是设置该WebDriver的实例的生命周期
from selenium import webdriver
driver = webdriver.Firefox()
driver.implicitly_wait(10) # 隐式等待 10 s
driver.get(“http://www.baidu.com”)
myDynamicElement = driver.find_element_by_id(“myDynamicElement”)
8、 页面切换
=======
driver.switch_to_window(“windowName”) # 切换窗口
driver.switch_to_frame(“frameName”) # 切换进框架里面
driver.switch_to_default_content() # 退出框架
案例
#先通过xpth定位到iframe
xf = driver.find_element_by_xpath(‘//*[@id=“x-URS-iframe”]’)
#再将定位对象传给switch_to_frame()方法
driver.switch_to_frame(xf)
driver.switch_to_default_content() # 退出框架
9、 框处理
======
9.1 警告框处理
=========
语法:
alert = driver.switch_to_alert()
alert 里面的方法
text:返回 alert/confirm/prompt 中的文字信息
accept():接受现有警告框
dismiss():解散现有警告框
send_keys(keysToSend):发送文本至警告框。keysToSend:将文本发送至警告框
9.2 下拉框选择
=========
9.2.1 Select类的方法
================
9.2.1.1 选中方法
============
from selenium import webdriver
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.implicitly_wait(10) # 隐式等待
driver.get(‘http://www.baidu.com’)
sel = driver.find_element_by_xpath(“//select[@id=‘nr’]”)
“”"
有三种方式选择下拉框
select_by_value(value) 通过value属性值进行选择
select_by_index(index) 通过索引查找,index从0开始
select_by_visible_text(text) 通过标签显示的text进行选择
“”"
Select(sel).select_by_value(value)
9.2.1.2 取消选择方法
==============
“”"
deselect_all() 取消全选
deselect_by_value(value) 通过value属性取消选择
deselect_by_index(index) 通过index取消选择
deselect_by_visible_text(text) 通过text取消选择
“”"
Select(sel).deselect_by_value(value)
9.2.2 先定位select 然后在定位option
===========================
selector = driver.find_element_by_id(“selectdemo”)
selector.find_element_by_xpath(“//option[@value=‘210103’]”).click()
9.2.3 直接通过xpath层级标签定位
=====================
driver.find_element_by_xpath(“.//*[@id=‘selectdemo’]/option[3]”).click()
10、 文件上传
========
driver.find_element_by_name(“file”).send_keys(‘D:\upload_file.txt’) # 定位上传按钮,添加本地文件
11、 cookie操作
============
WebDriver操作cookie的方法:
get_cookies()
get_cookie(name)
add_cookie(cookie_dict)
delete_cookie(name,optionsString)
delete_all_cookies()
11.1 cookie 登录方法
================
参考链接:
https://www.jianshu.com/p/773c58406bdb
手动获取网页的cookie,将其序列化并存储在本地
写入代码
for item in cookies:
driver.add_cookie(item)
与普通的在headers里添加 {‘Cookies’:’ '} 不一样的是,此方法需要按照cookie的name,value,path,domain格式逐个cookie添加
现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。
分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
for item in cookies:
driver.add_cookie(item)
与普通的在headers里添加 {‘Cookies’:’ '} 不一样的是,此方法需要按照cookie的name,value,path,domain格式逐个cookie添加
现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。
分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-uvth6c4w-1711080814479)]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。