大型情感剧集Selenium:2_options设置 #华为云·寻找黑马程序员#
上集回顾
昨天说简单介绍了什么是selenium,它能干what,和发展史与梗概。当的是python如何通过pip安装selenium,并下载对应浏览器的webdriver。
最后简单通过一个Demo描述了下如何导入selenium模块,并通过webdriver打开浏览器(我用的chrome),访问我的简书…
今日内容
按照大纲来说,今天该讲selenium的几种对象定位方法了。但我按照套路来吧,你们说无趣,不按照套路来,又怕翻车丢粉。
可就这么就这么几个人关注,我按照套路那么写,怎么突出我的独树一帜?
所以我今天要说webdriver的options!
options?
为了成功的引出options,我们先来说一个现象。selenium默认打开窗口只是半屏的宽度,很多时候为了让视觉优化,我们需要使之全屏。
但有时候,我们需要多开浏览器,又需要它小屏…这样,我们需要设置浏览器的分辨率。看下面代码:
# -*- coding: utf-8 -*-
# @Author : 王翔
# @JianShu : 清风Python
# @Date : 2019/6/18 23:50
# @Software : PyCharm
# @version :Python 3.6.8
# @File : Day2.1_set_window.py
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.jianshu.com/u/d23fd5012bed")
# 最大化浏览器窗口
driver.maximize_window()
time.sleep(1)
# 调整浏览器窗口为900*600
driver.set_window_size(900, 600)
time.sleep(1)
driver.quit()
很多书上,都会告诉读者,通过.maximize_window()设置全屏,而使用.set_window_size(900, 600)设置特定的分辨率。
这样设置没错,但如果我是面试官,你这么答,顶多给你70分,不能再多了…why?
多数情况下,我们如何设置窗口的分辨率,是在我们在编码前就可以确定的。那么为什么要等到浏览器已经启动后,再去设置这些东西呢?
先小屏,然后再调整成大屏,脱裤子放屁,多此一举…如何优化?
就到了今天要说的options!
chrome.options
首先,我们需要导入options:
from selenium.webdriver.chrome.options import Options
既然导入了,就进去看看源码呗…
看这好像也没啥,定义了一堆列表和字典,然后创建了一堆property装饰器用来get、set方法用于设置…
但这里面的参数,多到你怀疑人生.不信你去看看介绍Chromium命令行开关列表。
说的太多就跑题了,挑一些说说。
先回到刚才的问题,如何设置浏览器分辨率,才是更优雅的做法?看代码
# -*- coding: utf-8 -*-
# @Author : 王翔
# @JianShu : 清风Python
# @Date : 2019/6/19 0:02
# @Software : PyCharm
# @version :Python 3.6.8
# @File : Day2.2_chrome_options.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--start-maximized')
driver = webdriver.Chrome(chrome_options=options)
driver.get("https://www.jianshu.com/u/d23fd5012bed")
driver.quit()
我们通过导入Options,并对选项进行设置,之后在webdriver创建时导入参数。
这样就不会出现刚才那种先打开浏览器,再调整成最大尺寸的问题了。这个考点小本本记下,面试会考,哈哈…(反正上周面试那几个的时候,没人给我这个回答)
有人说了,就为了这一个问题,你又是引入子类,又是设置、导入配置的,我宁愿像刚才那么搞。
可我说了啊,options的选项多到你怀疑人生。举几个常用的例子:
有些血气方刚的爱国小青年,往往在夜深人静的时候,喜欢仇视下日韩的娱乐文化,此时他们会打开Chrome的无痕模式,那么selenium怎么打开无痕模式呢?
options.add_argument('--incognito') incognito:伪装、隐姓埋名的意思…
这个不是考点,但很多年轻人现在已经在记笔记了!
再来说说强迫症患者需要的,selenium打开浏览器后,浏览器页面顶部会有一个提示栏chrome正受到自动测试软件的控制…,每次看到这个提示栏,我的强迫症就犯了,有种团战可以输,影魔必须死的感受,不点掉它我心难安啊!那么这个该怎么取消?
options.add_argument('--disable-infobars') 一瞬间火女莱恩双大影魔回泉水读秒…
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--incognito')
options.add_argument('--disable-infobars')
driver = webdriver.Chrome(chrome_options=options)
driver.get("https://www.jianshu.com/u/d23fd5012bed")
driver.quit()

再来一个抢饭碗的,PhantomJS一直是无界面浏览器的标杆,但chrome59版本开始增加了Chrome-headless模式,可以无界面运行浏览器,瞬间抢了PhantomJS的饭碗,走自己的路,让别人无路可走啊!
有些人说了,不显示浏览器,怎么知道浏览器打开没呢?最简单的方式,打印一下当前窗口的title呗…
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options=options)
driver.get("https://www.jianshu.com/u/d23fd5012bed")
time.sleep(3)
print(driver.title)
# 退出drvier关闭浏览器
driver.quit()
>>>output: 清风Python - 简书
以上这些,真是options中的九牛一毛,更多详细的内容,会在以后的文章用到时,再介绍…
To Be Continue
今天的内容就到这里,如果觉得有帮助,欢迎将文章或者我的公众号【清风Python】分享给更多喜欢python的人。
来源:华为云社区征文 作者:清风Python
大型情感剧集Selenium:2_options设置 #华为云·寻找黑马程序员#的更多相关文章
- 大型情感剧集Selenium:4_老中医教你(单/多/下拉框)选项定位 #华为云·寻找黑马程序员#
今天讲什么 讲什么标题说了,讲selenium的单选.多选.下拉框选项定位.但其实这东西,没什么太多说的,又比较枯燥,那该怎么让这一集selenium的课程变得有趣呢?有请老中医,哈哈- 怎么样,这个 ...
- 大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作 #华为云·寻找黑马程序员#
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- 大型情感剧集Selenium:3_元素定位 #华为云·寻找黑马程序员#
关于昨天的文章 今天有朋友反馈,代码运行的时候,selenium提示警告 DeprecationWarning: use options instead of chrome_options drive ...
- 大型情感剧集Selenium:1_介绍 #华为云·寻找黑马程序员#
学习selenium能做什么? 很多书籍.文章中是这么定义selenium的: Selenium 是开源的自动化测试工具,它主要是用于Web 应用程序的自动化测试,不只局限于此,同时支持所有基于web ...
- Flask开发VIP版HttpServer #华为云·寻找黑马程序员#
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- #华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库
在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化.但是这种序 ...
- 爬虫新宠requests_html 带你甄别2019虚假大学 #华为云·寻找黑马程序员#
python模块学习建议 学习python模块,给大家个我自己不专业的建议: 养成习惯,遇到一个模块,先去github上看看开发者们关于它的说明,而不是直接百度看别人写了什么东西.也许后者可以让你很快 ...
- 使用jieba分析小说太古神王中,男主更爱谁?去文章中找答案吧!#华为云·寻找黑马程序员#
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- python让你再也不为文章配图与素材发愁,让高清图片占满你的硬盘! #华为云·寻找黑马程序员#
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
随机推荐
- csps模拟测试110
好久没写博客了,主要是太懒了,这次考试其实状态还算好. 考试的时候半小时左右打完T1T2,先没打T2对拍,想了想T3,大概有了一个bitset的思路,回去补上了T2的对拍. 然后T3想了一些东西: 三 ...
- lrd 模拟 总结
觉得是时候总结一下达哥的考试了!达哥的考试我就没有考好过,就之前达哥的考试都是人家ak我爆零,然后这次也不例外,我总是想在考场上尝试一些新的东西,其实就是作死行为,有的时候这种行为可以为我带来收益但是 ...
- 创建windows系统下的虚拟机
创建新的虚拟机 添加映像(windows系统下必须先添加映像) 选择相应的镜像文件:网上查找密钥输入:版本按要求选择:单击 下一步:设置虚拟机名称 位置 :下一步 默认的磁盘大小(不用管)——下一 ...
- mysql优化必知(mysql的语句执行顺序)
MySQL的语句执行顺序 MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作.其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入 ...
- 新手小白的Linux学习之路
大家好,我是一个零基础的新手小白,在此和大家分享一下新手小白的学习之路.欢迎各位大神指教!谢谢 Linux简介: Linux操作系统诞生于1991年10月,由芬兰赫尔辛基大学的在校生Linus Tor ...
- Java虚拟机-字节码指令
目录 字节码指令 字节码与数据类型 加载和存储指令 运算指令 类型转换指令 对象创建与访问指令 操作数栈管理指令 控制转移指令 方法调用和返回指令 异常处理指令 同步指令 字节码指令 Java虚拟机的 ...
- Java基础:数值类型转换、强制类型转换
数值类型之间的转换 数值类型之间的转换,在小数值往大数值转换时,不会发生精度的损失.在小数值往大数值转换时有可能发生精度的损失. 比如byte最大值也只有127,如果一个大于127的int类型数据往b ...
- 航空概论(历年资料,引之百度文库,PS:未调格式,有点乱)
航空航天尔雅 选择题1. 已经实现了<天方夜谭>中的飞毯设想.—— A——美国2. 地球到月球大约—— C 38 万公里3. 建立了航空史上第一条定期空中路线—— B——德国4. 对于孔明 ...
- 小白学 Python 爬虫(3):前置准备(二)Linux基础入门
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 Linux 基础 CentOS 官网: https: ...
- API的描述语言--Swagger
Swagger是一种Rest API的表示方式. 有时也可以作为Rest API的交互式文档,描述形式化的接口描述,生成客户端和服务端的代码. 一,描述语言:Spec Swagger API Spec ...