Python Selenium参数配置方法解析


Posted in Python onJanuary 19, 2020

这篇文章主要介绍了Python Selenium参数配置方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

selenium.获取浏览器大小、设置浏览器位置、最大化浏览器

get_window_size()

获取浏览器大小

# 将窗口大小实例化
size_Dict = driver.get_window_size()
# 打印浏览器的宽和高
print("当前浏览器的宽:", size_Dict['width'])
print("当前浏览器的高:", size_Dict['height'])

set_window_size()

设置浏览器大小

driver.set_window_size(width=500, height=500, windowHandle="current")

get_window_position()    获取浏览器在屏幕上的坐标

# 将窗口位置实例化
position = driver.get_window_position()
# 打印窗口坐标
print(position)
print("浏览器所在位置的横坐标:", position["x"])
print("浏览器所在位置的纵坐标:", position["y"])

set_window_position()    设置浏览器在屏幕的位置

# 设置窗口位置并打印位置坐标
driver.set_window_position(x=100, y=200)
print(driver.get_window_position())

maximize_window()

最大化浏览器

# 最大化浏览器并输出浏览器的大小和位置坐标
driver.maximize_window()
print(driver.get_window_size())
print(driver.get_window_position())

Selenium中的“显式等待”和“隐式等待”

显式等待(常用)

显式等待的代码定义了等待条件,只有该条件触发,才执行后续代码。下面代码最多等待 10 秒,超时后就抛出 TimeoutException。

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 as EC

driver = webdriver.Firefox()driver.get("http://somedomain/url_that_delays_loading")
try:  
  element = WebDriverWait(driver, 10).until(     
    EC.presence_of_element_located((By.ID, "myDynamicElement")))
finally:
  # 等待后执行的代码
  # driver.quit()

隐式等待

隐式等待是在尝试发现某个元素的时候,如果没能立刻发现,就等待固定长度的时间。默认设置是0秒。一旦设置了隐式等待时间,它的作用范围就是Webdriver对象实例的整个生命周期。

from selenium import webdriver

driver = webdriver.Firefox()
driver.implicitly_wait(10) # seconds
driver.get("http://somedomain/url_that_delays_loading")
myDynamicElement = driver.find_element_by_id("myDynamicElement")

Selenium+Chrome参数配置

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 实例化一个启动参数对象
chrome_options = Options()
# 无界面运行(无窗口)
chrome_options.add_argument('--headless')
# 启动浏览器
driver = webdriver.Chrome(chrome_options=chrome_options)
# 请求百度首页
driver.get('http://www.baidu.com')

其中的 ?headless 就是一个启动项参数

常用的启动项参数如下所示

  • ?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个。我都改为15个了。
  • ?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 禁用图像
  • ?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 启用书签同步
  • ?single-process 单进程运行Google Chrome
  • ?start-maximized 启动Google Chrome就最大化
  • ?disable-java 禁止Java

Selenium+Chrome模拟移动设备

# 通过设置user-agent,用来模拟移动设备
# 比如模拟 android QQ浏览器
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"')

# 模拟iPhone 6
options.add_argument('user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"')

Selenium+Chrome禁止图片加载的参数配置

# 禁止图片的加载
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
使用PDB简单调试Python程序简明指南
Apr 25 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
Jun 26 Python
举例讲解Python设计模式编程中的访问者与观察者模式
Jan 26 Python
python中私有函数调用方法解密
Apr 29 Python
python中如何使用正则表达式的非贪婪模式示例
Oct 09 Python
python机器学习实战之最近邻kNN分类器
Dec 20 Python
Python中enumerate()函数编写更Pythonic的循环
Mar 06 Python
python cs架构实现简单文件传输
Mar 20 Python
DRF跨域后端解决之django-cors-headers的使用
Jan 27 Python
OpenCV+Python--RGB转HSI的实现
Nov 27 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
Apr 16 Python
浅谈tensorflow中张量的提取值和赋值
Jan 19 #Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 #Python
使用 Python 处理3万多条数据只要几秒钟
Jan 19 #Python
Python openpyxl模块原理及用法解析
Jan 19 #Python
Python imutils 填充图片周边为黑色的实现
Jan 19 #Python
python opencv 实现对图像边缘扩充
Jan 19 #Python
python给图像加上mask,并提取mask区域实例
Jan 19 #Python
You might like
ThinkPHP中关联查询实例
2014/12/02 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
基于PHP生成简单的验证码
2016/06/01 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
根据经纬度计算地球上两点之间的距离js实现代码
2013/03/05 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
基于React.js实现原生js拖拽效果引发的思考
2016/03/30 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
2017/07/07 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
[01:02:03]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS VG
2014/05/26 DOTA
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python共享引用(多个变量引用)示例代码
2013/12/04 Python
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
Python文件与文件夹常见基本操作总结
2016/09/19 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
keras输出预测值和真实值方式
2020/06/27 Python
Django封装交互接口代码
2020/07/12 Python
Python实现EM算法实例代码
2020/10/04 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
电脑教师的自我评价
2013/12/18 职场文书
新春寄语大全
2014/04/09 职场文书
优秀党员事迹材料
2014/12/18 职场文书
2014年医院党建工作总结
2014/12/20 职场文书
给朋友的道歉短信
2015/05/12 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
OpenCV 图像梯度的实现方法
2021/07/25 Python
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python