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 相关文章推荐
python每隔N秒运行指定函数的方法
Mar 16 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
Python3使用PyQt5制作简单的画板/手写板实例
Oct 19 Python
python Tkinter版学生管理系统
Feb 20 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
Jun 19 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
使用OpenCV实现道路车辆计数的使用方法
Jul 15 Python
python3.5的包存放的具体路径
Aug 16 Python
Python爬虫代理池搭建的方法步骤
Sep 28 Python
用python查找统一局域网下ip对应的mac地址
Jan 13 Python
pytorch 如何使用amp进行混合精度训练
May 24 Python
详解Python如何批量采集京东商品数据流程
Jan 22 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
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
php分页思路以及在ZF中的使用
2012/05/30 PHP
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
2017/05/11 Javascript
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
js里面的变量范围分享
2020/07/18 Javascript
详解JavaScript数据类型和判断方法
2020/09/04 Javascript
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
Python partial函数原理及用法解析
2019/12/11 Python
解决import tensorflow as tf 出错的原因
2020/04/16 Python
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
《风筝》教学反思
2014/04/10 职场文书
营业用房租赁协议书
2014/11/26 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL