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 . ChromeDevTools
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
{
@@ -31,93 +38,6 @@ public async Task BasicAuthentication()
31
38
Assert . AreEqual ( "Congratulations! You must have the proper credentials." ,
32
39
driver . FindElement ( By . TagName ( "p" ) ) . Text ) ;
33
40
}
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
41
122
42
[ TestMethod ]
123
43
public async Task RecordNetworkResponse ( )
@@ -185,5 +105,51 @@ public async Task TransformNetworkRequest()
185
105
186
106
Assert . AreEqual ( "two" , driver . FindElement ( By . Id ( "result" ) ) . Text ) ;
187
107
}
108
+
109
+ [ TestMethod ]
110
+ public async Task SetCookie ( )
111
+ {
112
+ var session = ( ( IDevTools ) driver ) . GetDevToolsSession ( ) ;
113
+ var domains = session . GetVersionSpecificDomains < OpenQA . Selenium . DevTools . V126 . DevToolsSessionDomains > ( ) ;
114
+ await domains . Network . Enable ( new OpenQA . Selenium . DevTools . V126 . Network . EnableCommandSettings ( ) ) ;
115
+
116
+ var cookieCommandSettings = new SetCookieCommandSettings
117
+ {
118
+ Name = "cheese" ,
119
+ Value = "gouda" ,
120
+ Domain = "www.selenium.dev" ,
121
+ Secure = true
122
+ } ;
123
+
124
+ await domains . Network . SetCookie ( cookieCommandSettings ) ;
125
+
126
+ driver . Url = "https://www.selenium.dev" ;
127
+ OpenQA . Selenium . Cookie cheese = driver . Manage ( ) . Cookies . GetCookieNamed ( "cheese" ) ;
128
+ Assert . AreEqual ( "gouda" , cheese . Value ) ;
129
+ }
130
+
131
+ [ TestMethod ]
132
+ public async Task PerformanceMetrics ( )
133
+ {
134
+ driver . Url = "https://www.selenium.dev/selenium/web/frameset.html" ;
135
+
136
+ var session = ( ( IDevTools ) driver ) . GetDevToolsSession ( ) ;
137
+ var domains = session . GetVersionSpecificDomains < OpenQA . Selenium . DevTools . V126 . DevToolsSessionDomains > ( ) ;
138
+ await domains . Performance . Enable ( new OpenQA . Selenium . DevTools . V126 . Performance . EnableCommandSettings ( ) ) ;
139
+
140
+ var metricsResponse =
141
+ await session . SendCommand < GetMetricsCommandSettings , GetMetricsCommandResponse > (
142
+ new GetMetricsCommandSettings ( )
143
+ ) ;
144
+
145
+ var metrics = metricsResponse . Metrics . ToDictionary (
146
+ dict => dict . Name ,
147
+ dict => dict . Value
148
+ ) ;
149
+
150
+ Assert . IsTrue ( metrics [ "DevToolsCommandDuration" ] > 0 ) ;
151
+ Assert . AreEqual ( 12 , metrics [ "Frames" ] ) ;
152
+ }
153
+
188
154
}
189
155
}
0 commit comments