Skip to content

Commit d463d38

Browse files
authored
Merge pull request #62 from FlaUI/find-desktop-elements
Add ability to find desktop elements
2 parents b84a2ec + 666feb6 commit d463d38

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/FlaUI.WebDriver.UITests/FindElementsTests.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,17 @@ namespace FlaUI.WebDriver.UITests
88
{
99
public class FindElementsTests
1010
{
11+
[Test]
12+
public void FindElement_FromRoot_ReturnsElement()
13+
{
14+
var driverOptions = FlaUIDriverOptions.RootApp();
15+
using var driver = new RemoteWebDriver(WebDriverFixture.WebDriverUrl, driverOptions);
16+
17+
var element = driver.FindElement(By.Name("Taskbar"));
18+
19+
Assert.That(element, Is.Not.Null);
20+
}
21+
1122
[Test]
1223
public void FindElement_ByXPath_ReturnsElement()
1324
{

src/FlaUI.WebDriver/Controllers/FindElementsController.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public FindElementsController(ILogger<FindElementsController> logger, ISessionRe
2424
public async Task<ActionResult> FindElement([FromRoute] string sessionId, [FromBody] FindElementRequest findElementRequest)
2525
{
2626
var session = GetActiveSession(sessionId);
27-
return await FindElementFrom(() => session.CurrentWindow, findElementRequest, session);
27+
return await FindElementFrom(() => session.App == null ? session.Automation.GetDesktop() : session.CurrentWindow, findElementRequest, session);
2828
}
2929

3030
[HttpPost("element/{elementId}/element")]
@@ -39,7 +39,7 @@ public async Task<ActionResult> FindElementFromElement([FromRoute] string sessio
3939
public async Task<ActionResult> FindElements([FromRoute] string sessionId, [FromBody] FindElementRequest findElementRequest)
4040
{
4141
var session = GetActiveSession(sessionId);
42-
return await FindElementsFrom(() => session.CurrentWindow, findElementRequest, session);
42+
return await FindElementsFrom(() => session.App == null ? session.Automation.GetDesktop() : session.CurrentWindow, findElementRequest, session);
4343
}
4444

4545
[HttpPost("element/{elementId}/elements")]
@@ -203,7 +203,7 @@ private AutomationElement GetElement(Session session, string elementId)
203203
private Session GetActiveSession(string sessionId)
204204
{
205205
var session = GetSession(sessionId);
206-
if (session.App == null || session.App.HasExited)
206+
if (session.App != null && session.App.HasExited)
207207
{
208208
throw WebDriverResponseException.NoWindowsOpenForSession();
209209
}

0 commit comments

Comments
 (0)