关于Python的Selenium框架全解,一篇完整的说明书

9、 框处理

9.1 警告框处理

9.2 下拉框选择

9.2.1 Select类的方法

9.2.1.1 选中方法

9.2.1.2 取消选择方法

9.2.2 先定位select 然后在定位option

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

10、 文件上传

11、 cookie操作

11.1 cookie 登录方法

12、 调用JS代码

13、 窗口截图

13.1 截取验证码图片案例

14、 关闭浏览器


selenium 基础语法

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

一、 环境配置

=======

1、 安装环境

=======

安装 selenium 第三方库

pip install selenium

下载浏览器驱动:

  • Firefox浏览器驱动: geckodriver

  • Chrome浏览器驱动: chromedriver , taobao备用地址

  • IE浏览器驱动: IEDriverServer

  • Edge浏览器驱动: MicrosoftWebDriver

  • Opera浏览器驱动: operadriver

  • PhantomJS浏览器驱动: phantomjs

需要把这些浏览器驱动放入 Python 应用目录里面的 Script 文件夹里面

干货主要有:

======

① 200 多本 Python 电子书(和经典的书籍)应该有

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且可靠的练手项目及源码)

④ Python基础入门、爬虫、网络开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

Python学习交流Q群101677771

2、 配置参数

=======

每次当selenium启动chrome浏览器的时候,chrome浏览器很干净,没有插件、没有收藏、没有历史记录,这是因为selenium在启动chrome时为了保证最快的运行效率,启动了一个裸浏览器,这就是为什么需要配置参数的原因,但是有些时候我们需要的不仅是一个裸浏览器

selenium启动配置参数接收是ChromeOptions类,创建方式如下 :

from selenium import webdriver

option = webdriver.ChromeOptions()

driver = webdriver.Chrome(chrome_options=option)

创建了ChromeOptions类之后就是添加参数,添加参数有几个特定的方法,分别对应添加不同类型的配置项目

from selenium import webdriver

option = webdriver.ChromeOptions()

添加启动参数

option.add_argument()

添加扩展应用

option.add_extension()

option.add_encoded_extension()

添加实验性质的设置参数

option.add_experimental_option()

设置调试器地址

option.debugger_address()

常用配置参数:

from selenium import webdriver

option = webdriver.ChromeOptions()

添加UA

options.add_argument(‘user-agent=“MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1”’)

指定浏览器分辨率

options.add_argument(‘window-size=1920x3000’)

谷歌文档提到需要加上这个属性来规避bug

chrome_options.add_argument(‘–disable-gpu’)

隐藏滚动条, 应对一些特殊页面

options.add_argument(‘–hide-scrollbars’)

不加载图片, 提升速度

options.add_argument(‘blink-settings=imagesEnabled=false’)

浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败

options.add_argument(‘–headless’)

以最高权限运行

options.add_argument(‘–no-sandbox’)

手动指定使用的浏览器位置

options.binary_location = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

#添加crx插件

option.add_extension(‘d:\crx\AdBlock_v2.17.crx’)

禁用JavaScript

option.add_argument(“–disable-javascript”)

设置开发者模式启动,该模式下webdriver属性为正常值

options.add_experimental_option(‘excludeSwitches’, [‘enable-automation’])

禁用浏览器弹窗

prefs = {

‘profile.default_content_setting_values’ : {

‘notifications’ : 2

}

}

options.add_experimental_option(‘prefs’,prefs)

添加代理 ip

options.add_argument(“–proxy-server=http://XXXXX.com:80”)

driver = webdriver.Chrome(chrome_options=chrome_options)

其他配置项目参数

–user-data-dir=”[PATH]”

指定用户文件夹User Data路径,可以把书签这样的用户数据保存在系统分区以外的分区

–disk-cache-dir=”[PATH]“

指定缓存Cache路径

–disk-cache-size=

指定Cache大小,单位Byte

–first run

重置到初始状态,第一次运行

–incognito

隐身模式启动

–disable-javascript

禁用Javascript

–omnibox-popup-count=“num”

将地址栏弹出的提示菜单数量改为num个

–user-agent=“xxxxxxxx”

修改HTTP请求头部的Agent字符串,可以通过about:version页面查看修改效果

–disable-plugins

禁止加载所有插件,可以增加速度。可以通过about:plugins页面查看效果

–disable-javascript

禁用JavaScript,如果觉得速度慢在加上这个

–disable-java

禁用java

–start-maximized

启动就最大化

–no-sandbox

取消沙盒模式

–single-process

单进程运行

–process-per-tab

每个标签使用单独进程

–process-per-site

每个站点使用单独进程

–in-process-plugins

插件不启用单独进程

–disable-popup-blocking

禁用弹出拦截

–disable-plugins

禁用插件

–disable-images

禁用图像

–incognito

启动进入隐身模式

–enable-udd-profiles

启用账户切换菜单

–proxy-pac-url

使用pac代理 [via 1/2]

–lang=zh-CN

设置语言为简体中文

–disk-cache-dir

自定义缓存目录

–disk-cache-size

自定义缓存最大值(单位byte)

–media-cache-size

自定义多媒体缓存最大值(单位byte)

–bookmark-menu

在工具 栏增加一个书签按钮

–enable-sync

启用书签同步

3、 常用参数搭配

=========

制作无头浏览器

第一种写法

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

chrome_options = Options()

chrome_options.add_argument(‘–headless’)

chrome_options.add_argument(‘–disable-gpu’)

driver = webdriver.Chrome(chrome_options=chrome_options)

第二种写法

from selenium import webdriver

options = webdriver.ChromeOptions()

options.add_argument(‘–headless’)

options.add_argument(‘–disable-gpu’)

driver = webdriver.Chrome(chrome_options=options)

规避检测

门户网站检测如果是selenium请求的,有可能会拒绝访问。这也是一种反爬机制

实现规避检测

from selenium import webdriver

from selenium.webdriver import ChromeOptions

options = ChromeOptions()

options.add_experimental_option(‘excludeSwitcher’, [‘enable-automation’])

driver = webdriver.Chrome(options=options)

注意:这里只能使用 options 添加

如果有其他的模块要添加,注意要分开添加

4、 分浏览器启动

=========

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)

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 29
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python selenium框架是一个用于WebUI自动化的Python库。它可以模拟用户在浏览器中的行为,例如点击、输入、提交表单等操作。通过selenium框架,开发者可以编写测试脚本来自动化执行各种网页操作,从而提高测试效率和准确性。 使用selenium框架时,首先需要安装selenium库。然后,你可以使用各种浏览器驱动程序(如ChromeDriver、FirefoxDriver)来控制浏览器进行自动化操作。可以通过webdriver模块来实例化驱动程序,然后使用该实例进行各种操作。 以下是一个使用selenium框架的示例代码: ``` 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") # 使用WebDriverWait来等待元素加载完成 element = WebDriverWait(driver, 5, 0.5).until( expected_conditions.presence_of_element_located((By.ID, "kw")) ) # 在输入框中输入关键字"selenium" element.send_keys('selenium') # 关闭浏览器驱动程序 driver.quit() ``` 此外,你还可以使用不同的浏览器启动配置参数,如ChromeOptions类来进行一些定制化的配置。例如: ``` from selenium import webdriver # 创建ChromeOptions实例 options = webdriver.ChromeOptions() # 在启动Chrome浏览器时传入ChromeOptions对象 driver = webdriver.Chrome(chrome_options=options) ``` 通过使用python selenium框架,你可以编写自动化测试脚本,模拟用户的操作行为,从而实现对Web应用程序的自动化测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值