Skip to content

Commit f068e27

Browse files
committed
[examples] reorganize code examples for BiDi
1 parent 603cb0c commit f068e27

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+551
-4038
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
using System;
2+
using System.Collections;
3+
using System.Collections.Generic;
4+
using System.Threading.Tasks;
5+
using Microsoft.IdentityModel.Tokens;
6+
using Microsoft.VisualStudio.TestTools.UnitTesting;
7+
using OpenQA.Selenium;
8+
using OpenQA.Selenium.Support.UI;
9+
10+
namespace SeleniumDocs.Bidirectional.ChromeDevTools
11+
{
12+
[TestClass]
13+
public class LoggingTest : BaseChromeTest
14+
{
15+
[TestMethod]
16+
public async Task ConsoleLogs()
17+
{
18+
driver.Url = "https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html";
19+
20+
using IJavaScriptEngine monitor = new JavaScriptEngine(driver);
21+
var messages = new List<string>();
22+
monitor.JavaScriptConsoleApiCalled += (_, e) =>
23+
{
24+
messages.Add(e.MessageContent);
25+
};
26+
27+
await monitor.StartEventMonitoring();
28+
driver.FindElement(By.Id("consoleLog")).Click();
29+
driver.FindElement(By.Id("consoleError")).Click();
30+
new WebDriverWait(driver, TimeSpan.FromSeconds(5)).Until(_ => messages.Count > 1);
31+
monitor.StopEventMonitoring();
32+
33+
Assert.IsTrue(messages.Contains("Hello, world!"));
34+
Assert.IsTrue(messages.Contains("I am console error"));
35+
}
36+
37+
[TestMethod]
38+
public async Task JsErrors()
39+
{
40+
driver.Url = "https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html";
41+
42+
using IJavaScriptEngine monitor = new JavaScriptEngine(driver);
43+
var messages = new List<string>();
44+
monitor.JavaScriptExceptionThrown += (_, e) =>
45+
{
46+
messages.Add(e.Message);
47+
};
48+
49+
await monitor.StartEventMonitoring();
50+
driver.FindElement(By.Id("jsException")).Click();
51+
new WebDriverWait(driver, TimeSpan.FromSeconds(5)).Until(_ => !messages.IsNullOrEmpty());
52+
monitor.StopEventMonitoring();
53+
54+
Assert.IsTrue(messages.Contains("Uncaught"));
55+
}
56+
}
57+
}
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
1-
using System;
2-
using System.Collections;
31
using System.Collections.Generic;
42
using System.Threading.Tasks;
5-
using Microsoft.IdentityModel.Tokens;
63
using Microsoft.VisualStudio.TestTools.UnitTesting;
74
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;
99

10-
namespace SeleniumDocs.Bidirectional.ChromeDevTools
10+
11+
namespace SeleniumDocs.BiDi.ChromeDevTools
1112
{
1213
[TestClass]
13-
public class BidiApiTest : BaseChromeTest
14+
public class NetworkTest : BaseTest
1415
{
16+
[TestInitialize]
17+
public void Startup()
18+
{
19+
StartDriver("126");
20+
}
21+
1522
[TestMethod]
1623
public async Task BasicAuthentication()
1724
{
@@ -31,93 +38,6 @@ public async Task BasicAuthentication()
3138
Assert.AreEqual("Congratulations! You must have the proper credentials.",
3239
driver.FindElement(By.TagName("p")).Text);
3340
}
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-
}
12141

12242
[TestMethod]
12343
public async Task RecordNetworkResponse()
@@ -185,5 +105,51 @@ public async Task TransformNetworkRequest()
185105

186106
Assert.AreEqual("two", driver.FindElement(By.Id("result")).Text);
187107
}
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+
188154
}
189155
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
using System;
2+
using System.Collections;
3+
using System.Collections.Generic;
4+
using System.Threading.Tasks;
5+
using Microsoft.IdentityModel.Tokens;
6+
using Microsoft.VisualStudio.TestTools.UnitTesting;
7+
using OpenQA.Selenium;
8+
using OpenQA.Selenium.Support.UI;
9+
10+
namespace SeleniumDocs.Bidirectional.ChromeDevTools
11+
{
12+
[TestClass]
13+
public class ScriptTest : BaseChromeTest
14+
{
15+
[TestMethod]
16+
public async Task PinScript()
17+
{
18+
driver.Url = "https://www.selenium.dev/selenium/web/xhtmlTest.html";
19+
var element = driver.FindElement(By.Id("id1"));
20+
21+
var key = await new JavaScriptEngine(driver).PinScript("return arguments;");
22+
23+
var arguments = ((WebDriver)driver).ExecuteScript(key, 1, true, element);
24+
25+
var expected = new List<object>
26+
{
27+
1L,
28+
true,
29+
element
30+
};
31+
CollectionAssert.AreEqual(expected, (ICollection)arguments);
32+
}
33+
34+
[TestMethod]
35+
public async Task MutatedElements()
36+
{
37+
driver.Url = "https://www.selenium.dev/selenium/web/dynamic.html";
38+
39+
var mutations = new List<IWebElement>();
40+
using IJavaScriptEngine monitor = new JavaScriptEngine(driver);
41+
monitor.DomMutated += (_, e) =>
42+
{
43+
var locator = By.CssSelector($"*[data-__webdriver_id='{e.AttributeData.TargetId}']");
44+
mutations.Add(driver.FindElement(locator));
45+
};
46+
47+
await monitor.StartEventMonitoring();
48+
await monitor.EnableDomMutationMonitoring();
49+
50+
driver.FindElement(By.Id("reveal")).Click();
51+
52+
new WebDriverWait(driver, TimeSpan.FromSeconds(5)).Until(_ => !mutations.IsNullOrEmpty());
53+
await monitor.DisableDomMutationMonitoring();
54+
monitor.StopEventMonitoring();
55+
56+
var revealed = driver.FindElement(By.Id("revealed"));
57+
Assert.AreEqual(revealed, mutations[0]);
58+
}
59+
}
60+
}

examples/dotnet/SeleniumDocs/Bidirectional/ChromeDevtools/CdpApiTest.cs

Lines changed: 0 additions & 91 deletions
This file was deleted.

0 commit comments

Comments
 (0)