本文集连接:https://www.jianshu.com/nb/25338984javascript
在Selenium
中使用不一样的Webdriver
可能会有不同的方法,有些相同的操做会获得不同的结果,本文主要介绍的是Chrome()
的使用方法。html
其余Webdriver
能够查阅官方文档。java
这是一个Chrome的参数对象,在此对象中使用add_argument()
方法能够添加启动参数,添加完毕后能够在初始化Webdriver对象时将此Options对象传入,则能够实现以特定参数启动Chrome。web
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 实例化一个启动参数对象
chrome_options = Options()
# 添加启动参数
chrome_options.add_argument('--window-size=1366,768')
# 将参数对象传入Chrome,则启动了一个设置了窗口大小的Chrome
browser = webdriver.Chrome(chrome_options=chrome_options)
启动参数 | 做用 |
---|---|
--user-agent="" | 设置请求头的User-Agent |
--window-size=1366,768 | 设置浏览器分辨率 |
--headless | 无界面运行 |
--start-maximized | 最大化运行 |
--incognito | 隐身模式 |
--disable-javascript | 禁用javascript |
--disable-infobars | 禁用浏览器正在被自动化程序控制的提示 |
完整启动参数能够到此页面查看:chrome
https://peter.sh/experiments/chromium-command-line-switches/api
Chrome的禁用图片加载参数设置比较复杂,以下所示:浏览器
prefs = {
'profile.default_content_setting_values' : {
'images' : 2
}
}
options.add_experimental_option('prefs',prefs)
使用浏览器时经常会有弹窗弹出,如下选项能够禁止弹窗:app
prefs = {
'profile.default_content_setting_values' : {
'notifications' : 2
}
}
options.add_experimental_option('prefs',prefs)
class selenium.webdriver.chrome.options.Options
less
Bases: object
ui
__init__
()
add_argument
(argument)
Adds an argument to the listArgs:Sets the arguments
add_encoded_extension
(extension)
Adds Base64 encoded string with extension data to a list that will be used to extract it to the ChromeDriverArgs:extension: Base64 encoded string with extension data
add_experimental_option
(name, value)
Adds an experimental option which is passed to chrome.Args:name: The experimental option name. value: The option value.
add_extension
(extension)
Adds the path to the extension to a list that will be used to extract it to the ChromeDriverArgs:extension: path to the *.crx file
set_headless
(headless=True)
Sets the headless argumentArgs:headless: boolean value indicating to set the headless option
to_capabilities
()
Creates a capabilities with all the options that have been set andreturns a dictionary with everything
KEY
= 'goog:chromeOptions'
arguments
Returns a list of arguments needed for the browser
binary_location
Returns the location of the binary otherwise an empty string
debugger_address
Returns the address of the remote devtools instance
experimental_options
Returns a dictionary of experimental options for chrome.
extensions
Returns a list of encoded extensions that will be loaded into chrome
headless
Returns whether or not the headless argument is set
这个对象继承自selenium.webdriver.remote.webdriver.WebDriver
,这个类会在下一章讲到,Chrome的WebDriver做为子类增添了几个方法。
chromedriver.exe通常能够放在环境文件中,可是有时候为了方便部署项目,或者为了容易打包,咱们能够将chromedriver.exe放到咱们的项目目录中,而后在初始化Chrome Webdriver对象时,传入chromedriver.exe的路径。
以下所示:
from selenium import webdriver
browser = webdriver.Chrome(executable_path='chromedriver.exe')
class selenium.webdriver.chrome.webdriver.WebDriver(executable_path='chromedriver', port=0, options=None, service_args=None, desired_capabilities=None, service_log_path=None, chrome_options=None)
Bases: selenium.webdriver.remote.webdriver.WebDriver
Controls the ChromeDriver and allows you to drive the browser.
You will need to download the ChromeDriver executable fromhttp://chromedriver.storage.googleapis.com/index.html
__init__
(executable_path='chromedriver', port=0, options=None, service_args=None, desired_capabilities=None, service_log_path=None, chrome_options=None)
Creates a new instance of the chrome driver.
Starts the service and then creates new instance of chrome driver.
Args:
executable_path - path to the executable. If the default is used it assumes the executable is in the $PATHport
port you would like the service to run, if left as 0, a free port will be found.
desired_capabilities: Dictionary object with non-browser specific capabilities only, such as “proxy” or “loggingPref”.
options: this takes an instance of ChromeOptions
create_options
()
get_network_conditions
()
Gets Chrome network emulation settings.
Returns:A dict. For example:
{‘latency’: 4, ‘download_throughput’: 2, ‘upload_throughput’: 2, ‘offline’: False}
launch_app
(id)
Launches Chrome app specified by id.
quit
()
Closes the browser and shuts down the ChromeDriver executable that is started when starting the ChromeDriver
set_network_conditions
(**network_conditions)
Sets Chrome network emulation settings.
Args:
network_conditions: A dict with conditions specification.
Usage:
driver.set_network_conditions(offline=False, latency=5, # additional latency (ms)
download_throughput=500 * 1024, # maximal throughput
upload_throughput=500 * 1024) # maximal throughput