来源:1、《精通python自动化编程-黄永祥 第16章 16.6 Selenium常用功能 》
2、https://blog.csdn.net/weixin_41624982/article/details/88904262
3、https://blog.csdn.net/duzilonglove/article/details/78517429
4、https://blog.csdn.net/qq_42082278/article/details/107717986
1、《精通python自动化编程-黄永祥 第16章 16.6 Selenium常用功能 》
浏览器参数chrome_options的设置
参数是在定义driver的时候设置,是一个Options类所实例化的对象。参数是设置浏览器是否可视化(加快代码运行速度)和浏览器的请求头(防止网站的反爬虫检测)等信息。
execute_script方法:通过浏览器JavaScript代码生成新的窗口,然后获取浏览器上的全部窗口信息。
window_handles方法:获取当前浏览器的窗口信息,并以列表形式表示。
switch_to_window方法:实现窗口之间的切换。
隐性等待:对整个周期都起作用,所以设置一次就好。
显性等待:每隔一段时间就检测一次,相符就下一步,否则超出最长时间就抛出异常。driver表示浏览器对象driver。timeout表示超过时间,等待的最长时间。poll_frequency=0.5表示检测时间的间隔。ignored_exceptions表示忽略的异常。until表示条件判断。
代码:
from selenium import webdriver
# 导入Options类
from selenium.webdriver.chrome.options import Options
url = 'https://www.baidu.com/'
# Options类实例化
chrome_options = Options()
# 设置浏览器参数
# --headless是不显示浏览器启动及执行过程
chrome_options.add_argument('--headless')
# 启动时设置默认语言为中文 UTF-8
# 设置lang和User-Agent信息,防止反爬虫检测
chrome_options.add_argument('lang=zh_CN.utf-8')
#user-agent用来模拟移动设备
UserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'
chrome_options.add_argument('User-Agent=' + UserAgent)
# 启动浏览器并设置chrome_options参数
driver = webdriver.Chrome(chrome_options=chrome_options)
# 浏览器窗口最大化
driver.maximize_window()
# 浏览器窗口最小化
driver.minimize_window()
driver.get(url)
# 获取网页的标题内容
print(driver.title)
# page_source用于获取网页的Html代码
print(driver.page_source)
from selenium import webdriver
import time
url = 'https://www.baidu.com/'
driver = webdriver.Chrome()
driver.get(url)
# 使用JavaScript开启新的窗口
js = 'window.open("https://www.google.com.hk/");'
driver.execute_script(js)
# 获取当前显示的窗口信息
current_window = driver.current_window_handle
# 获取浏览器的全部窗口信息
handles = driver.window_handles
# 设置延时以看到切换效果
time.sleep(3)
# 根据窗口信息进行窗口切换
# 切换百度搜索的窗口
driver.switch_to_window(handles[0])
time.sleep(3)
# 切换搜狗搜索的窗口
driver.switch_to_window(handles[1])
from selenium import webdriver
url = 'https://www.baidu.com/'
driver=webdriver.Chrome()
driver.get(url)
#隐性等待,最长等待时间为30秒
driver.implicitly_wait(30)
driver.find_element_by_id('kw').send_keys('Python')
#显性等待
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
# expected_conditions检查网页元素是否可见
condition=expected_conditions.visibility_of_element_located((By.ID,'kw'))
WebDriverWait(driver=driver,timeout=20,poll_frequency=0.5).until(condition)
?2、https://blog.csdn.net/weixin_41624982/article/details/88904262
#https://blog.csdn.net/duzilonglove/article/details/78517429
#添加扩展应用
from selenium import webdriver
options = webdriver.ChromeOptions()
extension_path = '/extension/path'
options.add_extension(extension_path)
driver = webdriver.Chrome(chrome_options = options)
# 禁止图片加载
from selenium import webdriver
options = webdriver.ChromeOptions()
prefs = {
'profile.default_content_setting_values' : {
'images' : 2
}
}
options.add_experimental_option('prefs',prefs)
driver = webdriver.Chrome(chrome_options = options)
driver.get("http://www.baidu.com/")
#selenium 隐藏被浏览器被自动化工具控制横幅
from selenium import webdriver
option = webdriver.ChromeOptions()
option.add_experimental_option('useAutomationExtension', False)
option.add_experimental_option('excludeSwitches', ['enable-automation'])
# 打开chrome浏览器
driver = webdriver.Chrome(options=option)
driver.get("https://www.baidu.com.cn")
print(driver.title)
#添加扩展应用
from selenium import webdriver
options = webdriver.ChromeOptions()
extension_path = '/extension/path'
options.add_extension(extension_path)
driver = webdriver.Chrome(chrome_options = options)
#附赠添加代理方法
from selenium import webdriver
PROXY = "proxy_host:proxy:port"
options = webdriver.ChromeOptions()
desired_capabilities = options.to_capabilities()
desired_capabilities['proxy'] = {
"httpProxy":PROXY,
"ftpProxy":PROXY,
"sslProxy":PROXY,
"noProxy":None,
"proxyType":"MANUAL",
"class":"org.openqa.selenium.Proxy",
"autodetect":False
}
driver = webdriver.Chrome(desired_capabilities = desired_capabilities)
#指定driver地址
from selenium import webdriver
driver = webdriver.Chrome(executable_path='..drivers\chromedriver.exe')
#这个地方的executable_path,可以是一个相对路径或一个绝对路径
3、https://blog.csdn.net/duzilonglove/article/details/78517429
chromeoptions 是一个方便控制 chrome 启动时属性的类。
chromeoptions 功能: (1)设置 chrome 二进制文件位置 (binary_location) (2)添加启动参数 (add_argument) (3)添加扩展应用 (add_extension, add_encoded_extension) (4)添加实验性质的设置参数 (add_experimental_option) (5)设置调试器地址 (debugger_address)
来源:https://blog.csdn.net/weixin_41624982/article/details/88904262
#selenium启动Chrome配置参数问题
#selenium启动配置参数接收是ChromeOptions类,创建方式如下:
from selenium import webdriver
option = webdriver.ChromeOptions()
#创建了ChromeOptions类之后就是添加参数,添加参数有几个特定的方法,分别对应添加不同类型的配置项目。
#设置 chrome 二进制文件位置 (binary_location)
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)
driver=webdriver.Chrome(chrome_options=chrome_options)
#浏览器地址栏参数:
#在浏览器地址栏输入下列命令得到相应的信息
about:version - 显示当前版本
about:memory - 显示本机浏览器内存使用状况
about:plugins - 显示已安装插件
about:histograms - 显示历史记录
about:dns - 显示DNS状态
about:cache - 显示缓存页面
about:gpu -是否有硬件加速
chrome://extensions/ - 查看已经安装的扩展
#image
#其他配置项目参数
–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
# 启用书签同步
?4、https://blog.csdn.net/qq_42082278/article/details/107717986
# chrome_options.add_argument('--headless') # 无头
# chrome_options.add_argument('--disable-gpu') # 不加载gpu,规避bug
# chrome_options.add_argument('proxy-server=http://111.11.11.11:1234') # proxy
chrome_options.add_argument('--incognito') # 无痕模式
chrome_options.add_argument('--disable-infobars') # 不显示 chrome正受到自动测试软件的控制。
chrome_options.add_argument('--no-sandbox') # 解决DevToolsActivePort文件不存在的报错
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])# 模拟真正浏览器
options.add_argument("--proxy-server=http://" + ip_port) 代理
其他可收藏内容:https://qcsdn.com/article/76095.html
|