Skip to content

Commit 0fa4291

Browse files
committed
[dotnet] Modernize exception handling in tests
1 parent 0eb8393 commit 0fa4291

File tree

10 files changed

+127
-179
lines changed

10 files changed

+127
-179
lines changed

dotnet/test/common/AlertsTest.cs

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -442,15 +442,11 @@ public void IncludesAlertTextInUnhandledAlertException()
442442

443443
driver.FindElement(By.Id("alert")).Click();
444444
WaitFor<IAlert>(AlertToBePresent, "No alert found");
445-
try
446-
{
447-
string title = driver.Title;
448-
Assert.Fail("Expected UnhandledAlertException");
449-
}
450-
catch (UnhandledAlertException e)
445+
446+
Assert.That(() =>
451447
{
452-
Assert.AreEqual("cheese", e.AlertText);
453-
}
448+
_ = driver.Title;
449+
}, Throws.InstanceOf<UnhandledAlertException>().With.Property(nameof(UnhandledAlertException.AlertText)).EqualTo("cheese"));
454450
}
455451

456452
[Test]
@@ -522,16 +518,14 @@ private Func<IWebElement> ElementToBePresent(By locator)
522518
{
523519
return () =>
524520
{
525-
IWebElement foundElement = null;
526521
try
527522
{
528-
foundElement = driver.FindElement(By.Id("open-page-with-onunload-alert"));
523+
return driver.FindElement(By.Id("open-page-with-onunload-alert"));
529524
}
530525
catch (NoSuchElementException)
531526
{
527+
return null;
532528
}
533-
534-
return foundElement;
535529
};
536530
}
537531

@@ -554,9 +548,8 @@ private Func<bool> WindowWithName(string name)
554548
}
555549
catch (NoSuchWindowException)
556550
{
551+
return false;
557552
}
558-
559-
return false;
560553
};
561554
}
562555

dotnet/test/common/BiDi/Network/NetworkEventsTest.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,8 @@ public async Task CanListenToFetchError()
132132

133133
await using var subscription = await context.Network.OnFetchErrorAsync(tcs.SetResult);
134134

135-
try
136-
{
137-
await context.NavigateAsync("https://not_a_valid_url.test", new() { Wait = ReadinessState.Complete });
138-
}
139-
catch (Exception) { }
135+
var navigateTask = context.NavigateAsync("https://not_a_valid_url.test", new() { Wait = ReadinessState.Complete });
136+
await ((Task)navigateTask).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
140137

141138
var res = await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5));
142139

dotnet/test/common/CorrectEventFiringTest.cs

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -348,20 +348,12 @@ public void SendingKeysToAFocusedElementShouldNotBlurThatElement()
348348
focused = true;
349349
break;
350350
}
351-
try
352-
{
353-
System.Threading.Thread.Sleep(200);
354-
}
355-
catch (Exception)
356-
{
357-
throw;
358-
}
359-
}
360-
if (!focused)
361-
{
362-
Assert.Fail("Clicking on element didn't focus it in time - can't proceed so failing");
351+
352+
System.Threading.Thread.Sleep(200);
363353
}
364354

355+
Assert.That(focused, Is.True, "Clicking on element didn't focus it in time - can't proceed so failing");
356+
365357
element.SendKeys("a");
366358
AssertEventNotFired("blur");
367359
}

dotnet/test/common/ElementAttributeTest.cs

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -127,28 +127,20 @@ public void ShouldThrowExceptionIfSendingKeysToElementDisabledUsingRandomDisable
127127
{
128128
driver.Url = formsPage;
129129
IWebElement disabledTextElement1 = driver.FindElement(By.Id("disabledTextElement1"));
130-
try
130+
131+
Assert.That(() =>
131132
{
132133
disabledTextElement1.SendKeys("foo");
133-
Assert.Fail("Should have thrown exception");
134-
}
135-
catch (InvalidElementStateException)
136-
{
137-
//Expected
138-
}
134+
}, Throws.InstanceOf<InvalidElementStateException>());
139135

140136
Assert.AreEqual(string.Empty, disabledTextElement1.Text);
141137

142138
IWebElement disabledTextElement2 = driver.FindElement(By.Id("disabledTextElement2"));
143-
try
139+
140+
Assert.That(() =>
144141
{
145142
disabledTextElement2.SendKeys("bar");
146-
Assert.Fail("Should have thrown exception");
147-
}
148-
catch (InvalidElementStateException)
149-
{
150-
//Expected
151-
}
143+
}, Throws.InstanceOf<InvalidElementStateException>());
152144

153145
Assert.AreEqual(string.Empty, disabledTextElement2.Text);
154146
}

dotnet/test/common/Environment/RemoteSeleniumServer.cs

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -66,17 +66,12 @@ public async Task StartAsync()
6666

6767
while (!isRunning && DateTime.Now < timeout)
6868
{
69-
try
70-
{
71-
using var response = await httpClient.GetAsync("http://localhost:6000/wd/hub/status");
69+
var statusTask = httpClient.GetAsync("http://localhost:6000/wd/hub/status");
70+
await ((Task)statusTask).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
7271

73-
if (response.StatusCode == HttpStatusCode.OK)
74-
{
75-
isRunning = true;
76-
}
77-
}
78-
catch (Exception ex) when (ex is HttpRequestException || ex is TimeoutException)
72+
if (statusTask.IsCompletedSuccessfully && statusTask.Result.StatusCode == HttpStatusCode.OK)
7973
{
74+
isRunning = true;
8075
}
8176
}
8277

@@ -91,14 +86,10 @@ public async Task StopAsync()
9186
{
9287
if (autoStart && webserverProcess != null && !webserverProcess.HasExited)
9388
{
94-
using var httpClient = new HttpClient();
95-
96-
try
97-
{
98-
using var response = await httpClient.GetAsync("http://localhost:6000/selenium-server/driver?cmd=shutDownSeleniumServer");
99-
}
100-
catch (Exception ex) when (ex is HttpRequestException || ex is TimeoutException)
89+
using (var httpClient = new HttpClient())
10190
{
91+
var shutDownTask = httpClient.GetAsync("http://localhost:6000/selenium-server/driver?cmd=shutDownSeleniumServer");
92+
await ((Task)shutDownTask).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
10293
}
10394

10495
webserverProcess.WaitForExit(10000);

dotnet/test/common/Environment/TestWebServer.cs

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -181,17 +181,8 @@ public async Task StopAsync()
181181
{
182182
using (var httpClient = new HttpClient())
183183
{
184-
try
185-
{
186-
using (await httpClient.GetAsync(EnvironmentManager.Instance.UrlBuilder.LocalWhereIs("quitquitquit")))
187-
{
188-
189-
}
190-
}
191-
catch (HttpRequestException)
192-
{
193-
194-
}
184+
var quitTask = httpClient.GetAsync(EnvironmentManager.Instance.UrlBuilder.LocalWhereIs("quitquitquit"));
185+
await ((Task)quitTask).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
195186
}
196187

197188
try

dotnet/test/common/ExecutingJavascriptTest.cs

Lines changed: 54 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -594,26 +594,67 @@ public void ShouldHandleRecursiveStructures()
594594
[Ignore("Reason for ignore: Failure indicates hang condition, which would break the test suite. Really needs a timeout set.")]
595595
public void ShouldThrowExceptionIfExecutingOnNoPage()
596596
{
597-
bool exceptionCaught = false;
598-
try
597+
Assert.That(() =>
599598
{
600599
((IJavaScriptExecutor)driver).ExecuteScript("return 1;");
601-
}
602-
catch (WebDriverException)
603-
{
604-
exceptionCaught = true;
605-
}
606-
607-
if (!exceptionCaught)
608-
{
609-
Assert.Fail("Expected an exception to be caught");
610-
}
600+
}, Throws.InstanceOf<WebDriverException>());
611601
}
612602

613603
[Test]
614604
public void ExecutingLargeJavaScript()
615605
{
616-
string script = "// stolen from injectableSelenium.js in WebDriver\nvar browserbot = {\n\n triggerEvent: function(element, eventType, canBubble, controlKeyDown, altKeyDown, shiftKeyDown, metaKeyDown) {\n canBubble = (typeof(canBubble) == undefined) ? true: canBubble;\n if (element.fireEvent && element.ownerDocument && element.ownerDocument.createEventObject) {\n // IE\n var evt = this.createEventObject(element, controlKeyDown, altKeyDown, shiftKeyDown, metaKeyDown);\n element.fireEvent('on' + eventType,evt);\n } else {\n var evt = document.createEvent('HTMLEvents');\n\n try {\n evt.shiftKey = shiftKeyDown;\n evt.metaKey = metaKeyDown;\n evt.altKey = altKeyDown;\n evt.ctrlKey = controlKeyDown;\n } catch(e) {\n // Nothing sane to do\n }\n\n evt.initEvent(eventType, canBubble, true);\n return element.dispatchEvent(evt);\n }\n },\n\n getVisibleText: function() {\n var selection = getSelection();\n var range = document.createRange();\n range.selectNodeContents(document.documentElement);\n selection.addRange(range);\nvar string = selection.toString();\n selection.removeAllRanges();\n\n return string;\n },\n\n getOuterHTML: function(element) {\n if(element.outerHTML) {\n return element.outerHTML;\n } else if(typeof(XMLSerializer) != undefined) {\n return new XMLSerializer().serializeToString(element);\n } else {\n throw \"can't get outerHTML in this browser\";\n }\n }\n\n\n};return browserbot.getOuterHTML.apply(browserbot, arguments);";
606+
string script = """
607+
// stolen from injectableSelenium.js in WebDriver
608+
var browserbot = {
609+
610+
triggerEvent: function(element, eventType, canBubble, controlKeyDown, altKeyDown, shiftKeyDown, metaKeyDown) {
611+
canBubble = (typeof(canBubble) == undefined) ? true: canBubble;
612+
if (element.fireEvent && element.ownerDocument && element.ownerDocument.createEventObject) {
613+
// IE
614+
var evt = this.createEventObject(element, controlKeyDown, altKeyDown, shiftKeyDown, metaKeyDown);
615+
element.fireEvent('on' + eventType,evt);
616+
} else {
617+
var evt = document.createEvent('HTMLEvents');
618+
619+
try {
620+
evt.shiftKey = shiftKeyDown;
621+
evt.metaKey = metaKeyDown;
622+
evt.altKey = altKeyDown;
623+
evt.ctrlKey = controlKeyDown;
624+
} catch(e) {
625+
// Nothing sane to do
626+
}
627+
628+
evt.initEvent(eventType, canBubble, true);
629+
return element.dispatchEvent(evt);
630+
}
631+
},
632+
633+
getVisibleText: function() {
634+
var selection = getSelection();
635+
var range = document.createRange();
636+
range.selectNodeContents(document.documentElement);
637+
selection.addRange(range);
638+
var string = selection.toString();
639+
selection.removeAllRanges();
640+
641+
return string;
642+
},
643+
644+
getOuterHTML: function(element) {
645+
if(element.outerHTML) {
646+
return element.outerHTML;
647+
} else if(typeof(XMLSerializer) != undefined) {
648+
return new XMLSerializer().serializeToString(element);
649+
} else {
650+
throw "can't get outerHTML in this browser";
651+
}
652+
}
653+
654+
655+
};return browserbot.getOuterHTML.apply(browserbot, arguments);
656+
""";
657+
617658
driver.Url = javascriptPage;
618659
IWebElement element = driver.FindElement(By.TagName("body"));
619660
object x = ExecuteScript(script, element);

dotnet/test/common/FrameSwitchingTest.cs

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -175,28 +175,18 @@ public void FrameSearchesShouldBeRelativeToTheCurrentlySelectedFrame()
175175
driver.SwitchTo().Frame(frameElement);
176176
Assert.AreEqual("2", driver.FindElement(By.Id("pageNumber")).Text);
177177

178-
try
178+
Assert.That(() =>
179179
{
180180
driver.SwitchTo().Frame("third");
181-
Assert.Fail();
182-
}
183-
catch (NoSuchFrameException)
184-
{
185-
// Do nothing
186-
}
181+
}, Throws.InstanceOf<NoSuchFrameException>());
187182

188183
driver.SwitchTo().DefaultContent();
189184
driver.SwitchTo().Frame("third");
190185

191-
try
186+
Assert.That(() =>
192187
{
193188
driver.SwitchTo().Frame("second");
194-
Assert.Fail();
195-
}
196-
catch (NoSuchFrameException)
197-
{
198-
// Do nothing
199-
}
189+
}, Throws.InstanceOf<NoSuchFrameException>());
200190

201191
driver.SwitchTo().DefaultContent();
202192
driver.SwitchTo().Frame("second");
@@ -615,9 +605,8 @@ private bool FrameExistsAndSwitchedTo(string locator)
615605
}
616606
catch (NoSuchFrameException)
617607
{
608+
return false;
618609
}
619-
620-
return false;
621610
}
622611

623612
private bool FrameExistsAndSwitchedTo(int index)
@@ -629,9 +618,8 @@ private bool FrameExistsAndSwitchedTo(int index)
629618
}
630619
catch (NoSuchFrameException)
631620
{
621+
return false;
632622
}
633-
634-
return false;
635623
}
636624

637625
private bool FrameExistsAndSwitchedTo(IWebElement frameElement)
@@ -643,9 +631,8 @@ private bool FrameExistsAndSwitchedTo(IWebElement frameElement)
643631
}
644632
catch (NoSuchFrameException)
645633
{
634+
return false;
646635
}
647-
648-
return false;
649636
}
650637
}
651638
}

0 commit comments

Comments
 (0)