1
- using System ;
2
- using System . Collections ;
3
1
using System . Collections . Generic ;
4
2
using System . Threading . Tasks ;
5
- using Microsoft . IdentityModel . Tokens ;
6
3
using Microsoft . VisualStudio . TestTools . UnitTesting ;
7
4
using OpenQA . Selenium ;
8
- using OpenQA . Selenium . Support . UI ;
5
+ using OpenQA . Selenium . DevTools ;
6
+ using System . Linq ;
7
+ using OpenQA . Selenium . DevTools . V126 . Network ;
8
+ using OpenQA . Selenium . DevTools . V126 . Performance ;
9
9
10
- namespace SeleniumDocs . Bidirectional . ChromeDevTools
10
+
11
+ namespace SeleniumDocs . BiDi . CDP
11
12
{
12
13
[ TestClass ]
13
- public class BidiApiTest : BaseChromeTest
14
+ public class NetworkTest : BaseTest
14
15
{
16
+ [ TestInitialize ]
17
+ public void Startup ( )
18
+ {
19
+ StartDriver ( "126" ) ;
20
+ }
21
+
15
22
[ TestMethod ]
16
23
public async Task BasicAuthentication ( )
17
24
{
@@ -20,104 +27,16 @@ public async Task BasicAuthentication()
20
27
UriMatcher = uri => uri . AbsoluteUri . Contains ( "herokuapp" ) ,
21
28
Credentials = new PasswordCredentials ( "admin" , "admin" )
22
29
} ;
23
-
24
30
var networkInterceptor = driver . Manage ( ) . Network ;
25
31
networkInterceptor . AddAuthenticationHandler ( handler ) ;
26
-
27
32
await networkInterceptor . StartMonitoring ( ) ;
33
+
28
34
driver . Navigate ( ) . GoToUrl ( "https://the-internet.herokuapp.com/basic_auth" ) ;
29
35
await networkInterceptor . StopMonitoring ( ) ;
30
36
31
37
Assert . AreEqual ( "Congratulations! You must have the proper credentials." ,
32
38
driver . FindElement ( By . TagName ( "p" ) ) . Text ) ;
33
39
}
34
-
35
- [ TestMethod ]
36
- public async Task PinScript ( )
37
- {
38
- driver . Url = "https://www.selenium.dev/selenium/web/xhtmlTest.html" ;
39
- var element = driver . FindElement ( By . Id ( "id1" ) ) ;
40
-
41
- var key = await new JavaScriptEngine ( driver ) . PinScript ( "return arguments;" ) ;
42
-
43
- var arguments = ( ( WebDriver ) driver ) . ExecuteScript ( key , 1 , true , element ) ;
44
-
45
- var expected = new List < object >
46
- {
47
- 1L ,
48
- true ,
49
- element
50
- } ;
51
- CollectionAssert . AreEqual ( expected , ( ICollection ) arguments ) ;
52
- }
53
-
54
- [ TestMethod ]
55
- public async Task MutatedElements ( )
56
- {
57
- driver . Url = "https://www.selenium.dev/selenium/web/dynamic.html" ;
58
-
59
- var mutations = new List < IWebElement > ( ) ;
60
- using IJavaScriptEngine monitor = new JavaScriptEngine ( driver ) ;
61
- monitor . DomMutated += ( _ , e ) =>
62
- {
63
- var locator = By . CssSelector ( $ "*[data-__webdriver_id='{ e . AttributeData . TargetId } ']") ;
64
- mutations . Add ( driver . FindElement ( locator ) ) ;
65
- } ;
66
-
67
- await monitor . StartEventMonitoring ( ) ;
68
- await monitor . EnableDomMutationMonitoring ( ) ;
69
-
70
- driver . FindElement ( By . Id ( "reveal" ) ) . Click ( ) ;
71
-
72
- new WebDriverWait ( driver , TimeSpan . FromSeconds ( 5 ) ) . Until ( _ => ! mutations . IsNullOrEmpty ( ) ) ;
73
- await monitor . DisableDomMutationMonitoring ( ) ;
74
- monitor . StopEventMonitoring ( ) ;
75
-
76
- var revealed = driver . FindElement ( By . Id ( "revealed" ) ) ;
77
- Assert . AreEqual ( revealed , mutations [ 0 ] ) ;
78
- }
79
-
80
- [ TestMethod ]
81
- public async Task ConsoleLogs ( )
82
- {
83
- driver . Url = "https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html" ;
84
-
85
- using IJavaScriptEngine monitor = new JavaScriptEngine ( driver ) ;
86
- var messages = new List < string > ( ) ;
87
- monitor . JavaScriptConsoleApiCalled += ( _ , e ) =>
88
- {
89
- messages . Add ( e . MessageContent ) ;
90
- } ;
91
-
92
- await monitor . StartEventMonitoring ( ) ;
93
- driver . FindElement ( By . Id ( "consoleLog" ) ) . Click ( ) ;
94
- driver . FindElement ( By . Id ( "consoleError" ) ) . Click ( ) ;
95
- new WebDriverWait ( driver , TimeSpan . FromSeconds ( 5 ) ) . Until ( _ => messages . Count > 1 ) ;
96
- monitor . StopEventMonitoring ( ) ;
97
-
98
- Assert . IsTrue ( messages . Contains ( "Hello, world!" ) ) ;
99
- Assert . IsTrue ( messages . Contains ( "I am console error" ) ) ;
100
- }
101
-
102
- [ TestMethod ]
103
- public async Task JsErrors ( )
104
- {
105
- driver . Url = "https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html" ;
106
-
107
- using IJavaScriptEngine monitor = new JavaScriptEngine ( driver ) ;
108
- var messages = new List < string > ( ) ;
109
- monitor . JavaScriptExceptionThrown += ( _ , e ) =>
110
- {
111
- messages . Add ( e . Message ) ;
112
- } ;
113
-
114
- await monitor . StartEventMonitoring ( ) ;
115
- driver . FindElement ( By . Id ( "jsException" ) ) . Click ( ) ;
116
- new WebDriverWait ( driver , TimeSpan . FromSeconds ( 5 ) ) . Until ( _ => ! messages . IsNullOrEmpty ( ) ) ;
117
- monitor . StopEventMonitoring ( ) ;
118
-
119
- Assert . IsTrue ( messages . Contains ( "Uncaught" ) ) ;
120
- }
121
40
122
41
[ TestMethod ]
123
42
public async Task RecordNetworkResponse ( )
@@ -129,8 +48,8 @@ public async Task RecordNetworkResponse()
129
48
{
130
49
contentType . Add ( e . ResponseHeaders [ "content-type" ] ) ;
131
50
} ;
132
-
133
51
await networkInterceptor . StartMonitoring ( ) ;
52
+
134
53
driver . Navigate ( ) . GoToUrl ( "https://www.selenium.dev/selenium/web/blank.html" ) ;
135
54
await networkInterceptor . StopMonitoring ( ) ;
136
55
@@ -149,11 +68,10 @@ public async Task TransformNetworkResponse()
149
68
Body = "Creamy, delicious cheese!"
150
69
}
151
70
} ;
152
-
153
71
INetwork networkInterceptor = driver . Manage ( ) . Network ;
154
72
networkInterceptor . AddResponseHandler ( handler ) ;
155
-
156
73
await networkInterceptor . StartMonitoring ( ) ;
74
+
157
75
driver . Navigate ( ) . GoToUrl ( "https://www.selenium.dev" ) ;
158
76
await networkInterceptor . StopMonitoring ( ) ;
159
77
@@ -174,16 +92,60 @@ public async Task TransformNetworkRequest()
174
92
return request ;
175
93
}
176
94
} ;
177
-
178
95
INetwork networkInterceptor = driver . Manage ( ) . Network ;
179
96
networkInterceptor . AddRequestHandler ( handler ) ;
180
-
181
97
await networkInterceptor . StartMonitoring ( ) ;
98
+
182
99
driver . Url = "https://www.selenium.dev/selenium/web/devToolsRequestInterceptionTest.html" ;
183
100
driver . FindElement ( By . TagName ( "button" ) ) . Click ( ) ;
184
101
await networkInterceptor . StopMonitoring ( ) ;
185
102
186
103
Assert . AreEqual ( "two" , driver . FindElement ( By . Id ( "result" ) ) . Text ) ;
187
104
}
105
+
106
+ [ TestMethod ]
107
+ public async Task PerformanceMetrics ( )
108
+ {
109
+ driver . Url = "https://www.selenium.dev/selenium/web/frameset.html" ;
110
+
111
+ var session = ( ( IDevTools ) driver ) . GetDevToolsSession ( ) ;
112
+ var domains = session . GetVersionSpecificDomains < OpenQA . Selenium . DevTools . V126 . DevToolsSessionDomains > ( ) ;
113
+
114
+ await domains . Performance . Enable ( new OpenQA . Selenium . DevTools . V126 . Performance . EnableCommandSettings ( ) ) ;
115
+ var metricsResponse =
116
+ await session . SendCommand < GetMetricsCommandSettings , GetMetricsCommandResponse > (
117
+ new GetMetricsCommandSettings ( )
118
+ ) ;
119
+
120
+ var metrics = metricsResponse . Metrics . ToDictionary (
121
+ dict => dict . Name ,
122
+ dict => dict . Value
123
+ ) ;
124
+
125
+ Assert . IsTrue ( metrics [ "DevToolsCommandDuration" ] > 0 ) ;
126
+ Assert . AreEqual ( 12 , metrics [ "Frames" ] ) ;
127
+ }
128
+
129
+ [ TestMethod ]
130
+ public async Task SetCookie ( )
131
+ {
132
+ var session = ( ( IDevTools ) driver ) . GetDevToolsSession ( ) ;
133
+ var domains = session . GetVersionSpecificDomains < OpenQA . Selenium . DevTools . V126 . DevToolsSessionDomains > ( ) ;
134
+ await domains . Network . Enable ( new OpenQA . Selenium . DevTools . V126 . Network . EnableCommandSettings ( ) ) ;
135
+
136
+ var cookieCommandSettings = new SetCookieCommandSettings
137
+ {
138
+ Name = "cheese" ,
139
+ Value = "gouda" ,
140
+ Domain = "www.selenium.dev" ,
141
+ Secure = true
142
+ } ;
143
+ await domains . Network . SetCookie ( cookieCommandSettings ) ;
144
+
145
+ driver . Url = "https://www.selenium.dev" ;
146
+ OpenQA . Selenium . Cookie cheese = driver . Manage ( ) . Cookies . GetCookieNamed ( "cheese" ) ;
147
+ Assert . AreEqual ( "gouda" , cheese . Value ) ;
148
+ }
149
+
188
150
}
189
151
}
0 commit comments