《SeleniumBasic 3.141.0.0 - 在VBA中操作浏览器》高级技术之一:浏览器启动之前的配置
如果你的电脑中Chrome浏览器已经正确安装,相应的驱动的路径已经保存到环境变量中,那么SeleniumBasic只需要2行代码就可以启动浏览器
Private WD As SeleniumBasic.IWebDriver '声明一个变量
WD.New_ChromeDriver '直接启动Chrome浏览器
实际上,Selenium技术允许在启动之前设置一些参数,以满足更多需求。因为浏览器一旦启动起来之后,不能再修改这些参数。
启动前的设置主要包括两个方面:
一、浏览器选项(通过ChromeOptions设置)
二、驱动服务(通过ChromeDriverService设置)
SeleniumBasic支持的浏览器有6个:Chrome、Edge、Firefox、IE、Opera、Safari
每个浏览器都有对应的Options和Service设置,假设你要为Edge浏览器进行启动前的设置,声明如下:
Dim Service As SeleniumBasic.EdgeDriverService
Dim Options As SeleniumBasic.EdgeOptions
其他浏览器以此类推。由于Chrome浏览器占有最大份额,因此本文都以Chrome为例讲解。
首先看一下启动浏览器的New_ChromeDriver方法的构成
Sub New_ChromeDriver([service As ChromeDriverService], [options As ChromeOptions])
该方法后面可以添加两个可选参数,也就是说启动浏览器的时候,可以使用如下4种方式:
New_ChromeDriver
New_ChromeDriver service
New_ChromeDriver options
New_ChromeDriver service , options
首先看一下如何构造ChromeOptions
Dim Options As SeleniumBasic.ChromeOptions
Set Options = New SeleniumBasic.ChromeOptions
With Options
.BinaryLocation = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
End With
以上代码在ChromeOptions指明了Chrome浏览器的安装位置。
除了BinaryLocation属性外,其他属性和方法还有(标记黄色的为常用):
Property AcceptInsecureCertificates As Boolean
Property BinaryLocation As String
Property BrowserName As String
Property BrowserVersion As String
Property DebuggerAddress As String
Property LeaveBrowserRunning As Boolean
Property MinidumpPath As String
Property PlatformName As String
Property UseSpecCompliantProtocol As Boolean
Sub AddAdditionalCapability(capabilityName As String, capabilityValue, [isGlobalCapability As Boolean = False])
Sub AddArgument(argument As String)
Sub AddEncodedExtension(extension As String)
Sub AddExcludedArgument(argument As String)
Sub AddExtension(pathToExtension As String)
Sub AddWindowType(windowType As String)
Sub EnableMobileEmulation(deviceName As String)
Sub EnableMobileEmulation_deviceSettings(EnableTouchEvents As Boolean, Width As <不支持的变体类型>, Height As <不支持的变体类型>, PixelRatio As Double, UserAgent As String)
接下来看一下如何构造ChromeDriverService
Dim Service As SeleniumBasic.ChromeDriverService
Set Service = New SeleniumBasic.ChromeDriverService
With Service
.CreateDefaultService driverPath:="E:\Selenium\Drivers"
.HideCommandPromptWindow = True
End With
以上代码,CreateDefaultService方法用于指定驱动文件的位置,该方法包含driverPath和driverExecutableFileName两个可选参数。
HideCommandPromptWindow=True表示隐藏黑色的命令窗口。
其他属性和方法还有:
Property AndroidDebugBridgePort As Long
Property EnableVerboseLogging As Boolean
Property HideCommandPromptWindow As Boolean
Property HostName As String
Property IsRunning As Boolean 只读
Property LogPath As String
Property Port As Long
Property PortServerAddress As String
Property ProcessId As Long 只读
Property SuppressInitialDiagnosticInformation As Boolean
Property UrlPathPrefix As String
Property WhitelistedIPAddresses As String
Sub CreateDefaultService([driverPath As String], [driverExecutableFileName As String])
Sub Dispose()
Sub Start()
最后给出一个完整的实例
Private WD As SeleniumBasic.IWebDriver Sub Baidu() On Error GoTo Err1 Dim Service As SeleniumBasic.ChromeDriverService Dim Options As SeleniumBasic.ChromeOptions Set WD = New SeleniumBasic.IWebDriver Set Service = New SeleniumBasic.ChromeDriverService With Service .CreateDefaultService driverPath:="E:\Selenium\Drivers" .HideCommandPromptWindow = True End With Set Options = New SeleniumBasic.ChromeOptions With Options .BinaryLocation = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" '.AddExcludedArgument "enable-automation" '.AddArgument "--start-maximized" '.DebuggerAddress = "127.0.0.1:9999" '不要与其他几个混用 End With WD.New_ChromeDriver Service:=Service, Options:=Options WD.URL = "https://www.baidu.com" End Sub