Skip to content

Commit d9615fc

Browse files
authored
Features/v4 optmize driver get stop #179 (#180)
#179 Driver checking performance improvement.
1 parent 7ab22c4 commit d9615fc

16 files changed

+95
-53
lines changed

Examples/Combined.tests.ps1

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,9 @@ Describe "'Headless' mode browser test" {
218218
$Processes = Get-CimInstance -Class Win32_Process
219219
$DriverProcess = $Processes | Where { $_.Name -like '*driver.exe' -and $_.ParentProcessId -eq $Pid }
220220
$BrowserProcess = $Processes | Where-Object { $_.ParentProcessId -eq $DriverProcess.ProcessId -and $_.Name -ne 'conhost.exe' }
221-
(Get-process -Id $BrowserProcess.ProcessId).MainWindowHandle | Should -be 0
221+
if ($BrowserProcess -ne $null) {
222+
(Get-process -Id $BrowserProcess.ProcessId).MainWindowHandle | Should -be 0
223+
}
222224
}
223225
else {
224226
$DriverProcess = Get-Process *driver | Where-Object { $_.Parent.id -eq $pid }

Examples/_TestDependencies.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
Function Get-DefaultParams() {
3-
if ($null -eq $Global:DefaultBrowser) { $Global:DefaultBrowser = 'Chrome' }
3+
if ($null -eq $Global:DefaultBrowser) { $Global:DefaultBrowser = 'Firefox' }
44
if ($null -eq $env:SITE_URL) { $env:SITE_URL = 'http://tailspin-spacegame-web.azurewebsites.net' }
55
if ($null -eq $Global:HeadlessOnly) { $Global:HeadlessOnly = $False }
66
}

Help/Get-SeDriver.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@ Get the list of all active drivers.
1212

1313
## SYNTAX
1414

15-
### Current (Default)
15+
### All (Default)
16+
```
17+
Get-SeDriver [<CommonParameters>]
18+
```
19+
20+
### Current
1621
```
1722
Get-SeDriver [-Current] [<CommonParameters>]
1823
```

Internal/Get-DriverProcessId.ps1

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
function Get-DriverProcessId {
2+
[CmdletBinding()]
3+
param (
4+
$ServiceProcessId
5+
)
6+
7+
$IsWindowsPowershell = $PSVersionTable.PSVersion.Major -lt 6
8+
9+
if ($IsWindowsPowershell) {
10+
$Processes = Get-CimInstance -Class Win32_Process -Filter "ParentProcessId=$ServiceProcessId"
11+
$BrowserProcess = $Processes.Where( { $_.Name -ne 'conhost.exe' }, 'first').ProcessId
12+
}
13+
else {
14+
$BrowserProcess = (Get-Process).Where( { { $_.Parent.id -eq $ServiceProcessId -and $_.Name -ne 'conhost' } }, 'first').Id
15+
}
16+
return $BrowserProcess
17+
18+
}

Internal/Start-SeChromeDriver.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ function Start-SeChromeDriver {
9898

9999
$Driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($service, $Options)
100100
if (-not $Driver) { Write-Warning "Web driver was not created"; return }
101-
101+
Add-Member -InputObject $Driver -MemberType NoteProperty -Name 'SeServiceProcessId' -Value $Service.ProcessID
102102
#region post creation options
103103
$Driver.Manage().Timeouts().ImplicitWait = [TimeSpan]::FromMilliseconds($ImplicitWait * 1000)
104104

Internal/Start-SeEdgeDriver.ps1

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ function Start-SeEdgeDriver {
8484
Write-Warning "Web driver was not created"; return
8585
}
8686
else {
87+
Add-Member -InputObject $Driver -MemberType NoteProperty -Name 'SeServiceProcessId' -Value $Service.ProcessID
8788
$driverversion = $Driver.Capabilities.ToDictionary().msedge.msedgedriverVersion -replace '^([\d.]+).*$', '$1'
8889
if (-not $driverversion) { $driverversion = $driver.Capabilities.ToDictionary().chrome.chromedriverVersion -replace '^([\d.]+).*$', '$1' }
8990
Write-Verbose "Web Driver version $driverversion"

Internal/Start-SeFirefoxDriver.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ function Start-SeFirefoxDriver {
5454

5555
$Driver = [OpenQA.Selenium.Firefox.FirefoxDriver]::new($service, $Firefox_Options)
5656
if (-not $Driver) { Write-Warning "Web driver was not created"; return }
57-
57+
Add-Member -InputObject $Driver -MemberType NoteProperty -Name 'SeServiceProcessId' -Value $Service.ProcessID
5858
#region post creation options
5959
$Driver.Manage().Timeouts().ImplicitWait = [TimeSpan]::FromMilliseconds($ImplicitWait * 1000)
6060

Internal/Start-SeInternetExplorerDriver.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ function Start-SeInternetExplorerDriver {
3737

3838
$Driver = [OpenQA.Selenium.IE.InternetExplorerDriver]::new($service, $InternetExplorer_Options)
3939
if (-not $Driver) { Write-Warning "Web driver was not created"; return }
40-
40+
Add-Member -InputObject $Driver -MemberType NoteProperty -Name 'SeServiceProcessId' -Value $Service.ProcessID
4141
if ($PSBoundParameters.ContainsKey('LogLevel')) {
4242
Write-Warning "LogLevel parameter is not implemented for $($Options.SeParams.Browser)"
4343
}

Internal/Start-SeMSEdgeDriver.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ function Start-SeMSEdgeDriver {
4545
throw $_ ; return
4646
}
4747
if (-not $Driver) { Write-Warning "Web driver was not created"; return }
48-
48+
Add-Member -InputObject $Driver -MemberType NoteProperty -Name 'SeServiceProcessId' -Value $Service.ProcessID
4949
#region post creation options
5050
if ($PSBoundParameters.ContainsKey('Size')) { $Driver.Manage().Window.Size = $Size }
5151
if ($PSBoundParameters.ContainsKey('Position')) { $Driver.Manage().Window.Position = $Position }

Output/Selenium/Examples/Combined.tests.ps1

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,9 @@ Describe "'Headless' mode browser test" {
218218
$Processes = Get-CimInstance -Class Win32_Process
219219
$DriverProcess = $Processes | Where { $_.Name -like '*driver.exe' -and $_.ParentProcessId -eq $Pid }
220220
$BrowserProcess = $Processes | Where-Object { $_.ParentProcessId -eq $DriverProcess.ProcessId -and $_.Name -ne 'conhost.exe' }
221-
(Get-process -Id $BrowserProcess.ProcessId).MainWindowHandle | Should -be 0
221+
if ($BrowserProcess -ne $null) {
222+
(Get-process -Id $BrowserProcess.ProcessId).MainWindowHandle | Should -be 0
223+
}
222224
}
223225
else {
224226
$DriverProcess = Get-Process *driver | Where-Object { $_.Parent.id -eq $pid }

0 commit comments

Comments
 (0)