当前位置:   article > 正文

关于Python的Selenium框架全解,一篇完整的说明书,帮你快速拿Offer_python selenium driver

python selenium driver

from selenium import webdriver

driver = webdriver.Firefox() # Firefox浏览器

driver = webdriver.Firefox(executable_path=“驱动路径”)

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.set_window_size(480, 800)

浏览器后退,前进

driver.forward()

driver.back()

刷新

  • driver.refresh()

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 = driver.find_element_by_xpath(“.//*[@id=‘selectdemo’]”)

选择"篮球运动员"

selector.find_element_by_xpath(“//option[@value=‘210103’]”).click()

selector.find_elements_by_tag_name(“option”)[2].click()

9.2.3 直接通过xpath层级标签定位

=====================

直接通过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

  1. 手动获取网页的cookie,将其序列化并存储在本地

  2. 写入代码

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

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)]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/587358
推荐阅读
相关标签
  

闽ICP备14008679号