Python Selenium参数配置方法解析
作者:cknds 发布时间:2023-12-28 09:20:02
这篇文章主要介绍了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)
来源:https://www.cnblogs.com/yoyowin/p/12208277.html


猜你喜欢
- 查看安装的python版本号可以使用【python --version】命令。具体方法:首先按【win+r】组合键打开运行;然后输入cmd,
- 目录1.Python 变量的概述:2.Python 变量的命名3.Python 变量赋值3.1 Python 变量赋值概述3.2 Pytho
- JavaScript 函数调用JavaScript 函数有 4 种调用方式。每种方式的不同方式在于 this 的初始化。this 关键字一般
- 尽管数组在 Javascript 中是对象,但是不建议使用 for in 循环来遍历数组,实际上,有很多理由来阻止我们对数组使用 for i
- 刚开始,根据我的想法,这个很简单嘛,上sql语句delete from zqzrdp where tel in (select min(dp
- 今天在测试以下代码时遇到该错误:session_start();$_SESSION['username']=$usernam
- 可以利用in运算符来进行判断,如果在指定的序列中找到值返回True,否则返回False。运算符not in表示如果在指定的序列中没有找到值返
- Base64是一种用64个字符来表示任意二进制数据的方法。用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文
- 在mysql数据库开发中,我们有时候需要复制或拷贝一张表结构和数据到例外一张表,这个时候我们可以使用create ... select ..
- 前言使用 pymongo 进行 group by 操作有两种基本方式,他们都是 mongodb 的原生命令,于 Collection 对象上
- 本文实例讲述了Python实现的插入排序,冒泡排序,快速排序,选择排序算法。分享给大家供大家参考,具体如下:#!/usr/bin/pytho
- XMLHttpRequest的兼容代码功能结构上大体没有什么变动主要处理了这么几条:1.不同浏览器的创建方式2.事件大小写问题(ie7的XM
- 1、异常的传播当在函数中出现异常时,如果在函数中对异常进行了处理,则异常不会再继续传播。如果函数中没有对异常进行处理,则异常会继续向函数调用
- 本文实例为大家分享了python实现登录与注册系统的具体代码,供大家参考,具体内容如下实现功能1.调用文本文件里的用户信息2.可以将注册信息
- 安装模块1、找到对应的模块 http://www.python-excel.org/2、用pip install 安
- 本文实例讲述了python通过exifread模块获得图片exif信息的方法。分享给大家供大家参考。具体分析如下:python可通过exif
- 虽然有很多种方式可以解决这个问题,但是我们可以用T-SQL代码来处理这个文件删除过程。我用xp_cmdshell命令和FORFILES命令来
- 好了,看看我们的代码吧:upload.htm' 上传页面<html> <body>&nb
- 一、关于exists查询explain select * from vendor where EXISTS(select * from ar
- 写在之前SQLite 是一个小型的关系型数据库,它最大的特点在于不需要单独的服务、零配置。我们在之前讲过的两个数据库,不管是 MySQL 还