{"id":10504,"date":"2018-06-22T15:00:51","date_gmt":"2018-06-22T06:00:51","guid":{"rendered":"https:\/\/www.ka-net.org\/blog\/?p=10504"},"modified":"2018-06-22T15:54:42","modified_gmt":"2018-06-22T06:54:42","slug":"winappdriver-ui-recorder%e3%82%92%e8%a9%a6%e3%81%97%e3%81%a6%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.ka-net.org\/blog\/?p=10504","title":{"rendered":"WinAppDriver UI Recorder\u3092\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\u3002"},"content":{"rendered":"<p>\u4e0b\u8a18\u8a18\u4e8b\u306b\u3042\u308b\u901a\u308a\u3001\u300cWinAppDriver UI Recorder\u300d\u304c\u516c\u958b\u3055\u308c\u305f\u306e\u3067\u3001\u3055\u3063\u305d\u304f\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\n<blockquote><p>\u7c73Microsoft\u306f20\u65e5\uff08\u73fe\u5730\u6642\u9593\uff09\u3001\u65b0\u3057\u3044\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30c4\u30fc\u30eb\u300cWinAppDriver UI Recorder\u300d\u3092\u300cWindows Application Driver\u300d\u306e\u4e00\u90e8\u3068\u3057\u3066\u30ea\u30ea\u30fc\u30b9\u3057\u305f\u3002\u81ea\u52d5UI\u30c6\u30b9\u30c8\u3092\u4f5c\u6210\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u3002<\/p><\/blockquote>\n<p><a href=\"https:\/\/forest.watch.impress.co.jp\/docs\/news\/1128952.html\" title=\"Microsoft\u3001\u81ea\u52d5UI\u30c6\u30b9\u30c8\u306e\u4f5c\u6210\u652f\u63f4\u30c4\u30fc\u30eb\u300cWinAppDriver UI Recorder\u300d\u3092\u516c\u958b - \u7a93\u306e\u675c\" target=\"_blank\">https:\/\/forest.watch.impress.co.jp\/docs\/news\/1128952.html<\/a> \u3088\u308a<\/p>\n<blockquote><p>Microsoft\u306f2018\u5e746\u670820\u65e5\uff08\u7c73\u56fd\u6642\u9593\uff09\u3001\u300cWindows Application Driver\u300d\uff08WinAppDriver\uff09\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30fc\u5411\u3051\u306e\u65b0\u3057\u3044\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30c4\u30fc\u30eb\u300cWinAppDriver UI Recorder\u300d\uff08\u4ee5\u4e0b\u3001UI Recorder\uff09\u306e\u516c\u958b\u3092\u767a\u8868\u3057\u305f\u3002UI Recorder\u306f\u3001\u81ea\u52d5\u5316\u3055\u308c\u305fUI\uff08\u30e6\u30fc\u30b6\u30fc\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\uff09\u30c6\u30b9\u30c8\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u7c21\u5358\u306b\u4f5c\u6210\u3067\u304d\u308b\u30c4\u30fc\u30eb\u3060\u3002<\/p><\/blockquote>\n<p><a href=\"http:\/\/www.atmarkit.co.jp\/ait\/articles\/1806\/22\/news036.html\" title=\"Microsoft\u3001\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u81ea\u52d5UI\u30c6\u30b9\u30c8\u30b9\u30af\u30ea\u30d7\u30c8\u30c4\u30fc\u30eb\u300cWinAppDriver UI Recorder\u300d\u3092\u516c\u958b\uff1a\u81ea\u52d5UI\u30c6\u30b9\u30c8\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u7c21\u5358\u306b\u4f5c\u6210\u3067\u304d\u308b - \uff20IT\" target=\"_blank\">http:\/\/www.atmarkit.co.jp\/ait\/articles\/1806\/22\/news036.html<\/a><\/p>\n<h4 class=\"style4a\">WinAppDriver UI Recorder\u306e\u4f7f\u3044\u65b9<\/h4>\n<p><a href=\"https:\/\/github.com\/Microsoft\/WinAppDriver\/tree\/master\/Tools\/UIRecorder\" title=\"WinAppDriver UI Recorder Tool\" target=\"_blank\">GitHub<\/a>\u306e<a href=\"https:\/\/github.com\/Microsoft\/WinAppDriver\/releases\/\" title=\"WinAppDriver UI Recorder\" target=\"_blank\">Releases<\/a>\u30da\u30fc\u30b8\u306bZip\u5f62\u5f0f\u3067\u5727\u7e2e\u3055\u308c\u305f\u30d0\u30a4\u30ca\u30ea\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u4eca\u56de\u306f<a href=\"https:\/\/visualstudio.microsoft.com\/ja\/\" title=\"Visual Studio IDE\u3001\u30b3\u30fc\u30c9 \u30a8\u30c7\u30a3\u30bf\u30fc\u3001Team Services\u3001Mobile Center\" target=\"_blank\">Visual Studio Community 2017<\/a>\u3067\u30d3\u30eb\u30c9\u3057\u305f\u3082\u306e\u3092\u4f7f\u7528\u3057\u307e\u3057\u305f\u3002<\/p>\n<p><a href=\"https:\/\/www.ka-net.org\/blog\/wp-content\/uploads\/WinAppDriver_UI_Recorder_02.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ka-net.org\/blog\/wp-content\/uploads\/WinAppDriver_UI_Recorder_02.gif\" alt=\"\" width=\"728\" height=\"522\" class=\"alignnone size-full wp-image-10506\" \/><\/a><\/p>\n<p>WinAppDriver UI Recorder\u3092\u4f7f\u3046\u3068UI\u8981\u7d20\u306eXPath\u30af\u30a8\u30ea\u3092\u751f\u6210\u3067\u304d\u3001\u4e0a\u56f3\u306e\u901a\u308a\u300c<span style=\"color: #ff0000; font-weight: bold;\">Record<\/span>\u300d\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001\u64cd\u4f5c\u3092\u8a18\u9332\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<h4 class=\"style4a\">\u751f\u6210\u3055\u308c\u305f\u30b3\u30fc\u30c9<\/h4>\n<p>\u96fb\u5353\u3092\u64cd\u4f5c\u3057\u305f\u969b\u306b\u751f\u6210\u3055\u308c\u305f\u30b3\u30fc\u30c9\u304c\u4e0b\u8a18\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\/\/ LeftClick on &quot;One&quot; at (75,20)\r\nConsole.WriteLine(&quot;LeftClick on \\&quot;One\\&quot; at (75,20)&quot;);\r\nstring xp1 = &quot;\/Pane&#x5B;@Name=\\&quot;\u30c7\u30b9\u30af\u30c8\u30c3\u30d7 1\\&quot;]&#x5B;@ClassName=\\&quot;#32769\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator \u200e- Calculator\\&quot;]&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;NumberPad\\&quot;]&#x5B;@Name=\\&quot;Number pad\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;num1Button\\&quot;]&#x5B;@Name=\\&quot;One\\&quot;]&quot;;\r\nvar winElem1 = MyDesktopSession.FindElementByXPath(xp1);\r\nif (winElem1 != null)\r\n{\r\n    winElem1.Click();\r\n}\r\nelse\r\n{\r\n    Console.WriteLine($&quot;Failed to find element {xp1}&quot;);\r\n    return;\r\n}\r\n\r\n\r\n\/\/ LeftClick on &quot;Two&quot; at (44,20)\r\nConsole.WriteLine(&quot;LeftClick on \\&quot;Two\\&quot; at (44,20)&quot;);\r\nstring xp2 = &quot;\/Pane&#x5B;@Name=\\&quot;\u30c7\u30b9\u30af\u30c8\u30c3\u30d7 1\\&quot;]&#x5B;@ClassName=\\&quot;#32769\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator \u200e- Calculator\\&quot;]&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;NumberPad\\&quot;]&#x5B;@Name=\\&quot;Number pad\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;num2Button\\&quot;]&#x5B;@Name=\\&quot;Two\\&quot;]&quot;;\r\nvar winElem2 = MyDesktopSession.FindElementByXPath(xp2);\r\nif (winElem2 != null)\r\n{\r\n    winElem2.Click();\r\n}\r\nelse\r\n{\r\n    Console.WriteLine($&quot;Failed to find element {xp2}&quot;);\r\n    return;\r\n}\r\n\r\n\r\n\/\/ LeftClick on &quot;Three&quot; at (36,20)\r\nConsole.WriteLine(&quot;LeftClick on \\&quot;Three\\&quot; at (36,20)&quot;);\r\nstring xp3 = &quot;\/Pane&#x5B;@Name=\\&quot;\u30c7\u30b9\u30af\u30c8\u30c3\u30d7 1\\&quot;]&#x5B;@ClassName=\\&quot;#32769\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator \u200e- Calculator\\&quot;]&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;NumberPad\\&quot;]&#x5B;@Name=\\&quot;Number pad\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;num3Button\\&quot;]&#x5B;@Name=\\&quot;Three\\&quot;]&quot;;\r\nvar winElem3 = MyDesktopSession.FindElementByXPath(xp3);\r\nif (winElem3 != null)\r\n{\r\n    winElem3.Click();\r\n}\r\nelse\r\n{\r\n    Console.WriteLine($&quot;Failed to find element {xp3}&quot;);\r\n    return;\r\n}\r\n\r\n\r\n\/\/ LeftClick on &quot;Plus&quot; at (19,18)\r\nConsole.WriteLine(&quot;LeftClick on \\&quot;Plus\\&quot; at (19,18)&quot;);\r\nstring xp4 = &quot;\/Pane&#x5B;@Name=\\&quot;\u30c7\u30b9\u30af\u30c8\u30c3\u30d7 1\\&quot;]&#x5B;@ClassName=\\&quot;#32769\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator \u200e- Calculator\\&quot;]&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;StandardOperators\\&quot;]&#x5B;@Name=\\&quot;Standard operators\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;plusButton\\&quot;]&#x5B;@Name=\\&quot;Plus\\&quot;]&quot;;\r\nvar winElem4 = MyDesktopSession.FindElementByXPath(xp4);\r\nif (winElem4 != null)\r\n{\r\n    winElem4.Click();\r\n}\r\nelse\r\n{\r\n    Console.WriteLine($&quot;Failed to find element {xp4}&quot;);\r\n    return;\r\n}\r\n\r\n\r\n\/\/ LeftClick on &quot;Four&quot; at (57,18)\r\nConsole.WriteLine(&quot;LeftClick on \\&quot;Four\\&quot; at (57,18)&quot;);\r\nstring xp5 = &quot;\/Pane&#x5B;@Name=\\&quot;\u30c7\u30b9\u30af\u30c8\u30c3\u30d7 1\\&quot;]&#x5B;@ClassName=\\&quot;#32769\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator \u200e- Calculator\\&quot;]&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;NumberPad\\&quot;]&#x5B;@Name=\\&quot;Number pad\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;num4Button\\&quot;]&#x5B;@Name=\\&quot;Four\\&quot;]&quot;;\r\nvar winElem5 = MyDesktopSession.FindElementByXPath(xp5);\r\nif (winElem5 != null)\r\n{\r\n    winElem5.Click();\r\n}\r\nelse\r\n{\r\n    Console.WriteLine($&quot;Failed to find element {xp5}&quot;);\r\n    return;\r\n}\r\n\r\n\r\n\/\/ LeftClick on &quot;Five&quot; at (80,19)\r\nConsole.WriteLine(&quot;LeftClick on \\&quot;Five\\&quot; at (80,19)&quot;);\r\nstring xp6 = &quot;\/Pane&#x5B;@Name=\\&quot;\u30c7\u30b9\u30af\u30c8\u30c3\u30d7 1\\&quot;]&#x5B;@ClassName=\\&quot;#32769\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator \u200e- Calculator\\&quot;]&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;NumberPad\\&quot;]&#x5B;@Name=\\&quot;Number pad\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;num5Button\\&quot;]&#x5B;@Name=\\&quot;Five\\&quot;]&quot;;\r\nvar winElem6 = MyDesktopSession.FindElementByXPath(xp6);\r\nif (winElem6 != null)\r\n{\r\n    winElem6.Click();\r\n}\r\nelse\r\n{\r\n    Console.WriteLine($&quot;Failed to find element {xp6}&quot;);\r\n    return;\r\n}\r\n\r\n\r\n\/\/ LeftClick on &quot;Six&quot; at (34,18)\r\nConsole.WriteLine(&quot;LeftClick on \\&quot;Six\\&quot; at (34,18)&quot;);\r\nstring xp7 = &quot;\/Pane&#x5B;@Name=\\&quot;\u30c7\u30b9\u30af\u30c8\u30c3\u30d7 1\\&quot;]&#x5B;@ClassName=\\&quot;#32769\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator \u200e- Calculator\\&quot;]&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;NumberPad\\&quot;]&#x5B;@Name=\\&quot;Number pad\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;num6Button\\&quot;]&#x5B;@Name=\\&quot;Six\\&quot;]&quot;;\r\nvar winElem7 = MyDesktopSession.FindElementByXPath(xp7);\r\nif (winElem7 != null)\r\n{\r\n    winElem7.Click();\r\n}\r\nelse\r\n{\r\n    Console.WriteLine($&quot;Failed to find element {xp7}&quot;);\r\n    return;\r\n}\r\n\r\n\r\n\/\/ LeftClick on &quot;Equals&quot; at (59,29)\r\nConsole.WriteLine(&quot;LeftClick on \\&quot;Equals\\&quot; at (59,29)&quot;);\r\nstring xp8 = &quot;\/Pane&#x5B;@Name=\\&quot;\u30c7\u30b9\u30af\u30c8\u30c3\u30d7 1\\&quot;]&#x5B;@ClassName=\\&quot;#32769\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator \u200e- Calculator\\&quot;]&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;StandardOperators\\&quot;]&#x5B;@Name=\\&quot;Standard operators\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;equalButton\\&quot;]&#x5B;@Name=\\&quot;Equals\\&quot;]&quot;;\r\nvar winElem8 = MyDesktopSession.FindElementByXPath(xp8);\r\nif (winElem8 != null)\r\n{\r\n    winElem8.Click();\r\n}\r\nelse\r\n{\r\n    Console.WriteLine($&quot;Failed to find element {xp8}&quot;);\r\n    return;\r\n}<\/pre>\n<p>\u3053\u308c\u3092\u3053\u306e\u307e\u307e\u30b3\u30d4\u30fc\uff06\u30da\u30fc\u30b9\u30c8\u3057\u3066\u3082\u52d5\u4f5c\u3057\u306a\u3044\u306e\u3067\u3001<a href=\"https:\/\/blogs.msdn.microsoft.com\/visualstudio_jpn\/2016\/12\/02\/winappdrivertestanyappwithappiumsseleniumliketestsonwindows\/\" title=\"WinAppDriver: Selenium \u306b\u4f3c\u305f Appium \u306e\u30c6\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3001Windows \u3067\u3042\u3089\u3086\u308b\u30a2\u30d7\u30ea\u306e\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\" target=\"_blank\">\u4e00\u90e8\u30b3\u30fc\u30c9<\/a>\u3092\u66f8\u304d\u8db3\u3057\u3066\u5b9f\u884c\u3057\u305f\u3068\u3053\u308d\u3001\u8981\u7d20\u306e\u53d6\u5f97\u3067\u8e93\u304d\u307e\u3057\u305f\u3002<\/p>\n<p><a href=\"https:\/\/www.ka-net.org\/blog\/wp-content\/uploads\/WinAppDriver_UI_Recorder_03.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ka-net.org\/blog\/wp-content\/uploads\/WinAppDriver_UI_Recorder_03.jpg\" alt=\"\" width=\"806\" height=\"244\" class=\"alignnone size-full wp-image-10507\" srcset=\"https:\/\/www.ka-net.org\/blog\/wp-content\/uploads\/WinAppDriver_UI_Recorder_03.jpg 806w, https:\/\/www.ka-net.org\/blog\/wp-content\/uploads\/WinAppDriver_UI_Recorder_03-300x91.jpg 300w, https:\/\/www.ka-net.org\/blog\/wp-content\/uploads\/WinAppDriver_UI_Recorder_03-768x232.jpg 768w\" sizes=\"auto, (max-width: 806px) 100vw, 806px\" \/><\/a><\/p>\n<p>\u4ed5\u65b9\u304c\u7121\u3044\u306e\u3067\u3001XPath\u306e\u4e00\u90e8\u3092\u7de8\u96c6\u3057\u305f\u306e\u304c\u4e0b\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u3059\u3002<br \/>\n(\u300c<a href=\"https:\/\/www.ka-net.org\/blog\/?p=6879\" title=\"Windows Application Driver\u3092\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\u3002 | \u521d\u5fc3\u8005\u5099\u5fd8\u9332\" target=\"_blank\">Windows Application Driver\u3092\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\u3002<\/a>\u300d\u8a18\u4e8b\u306b\u66f8\u3044\u3066\u3044\u308b\u901a\u308a\u3001\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u969b\u306fNuGet\u3067\u300c<a href=\"https:\/\/www.nuget.org\/packages\/Appium.WebDriver\/\" title=\"NuGet Gallery | Appium.WebDriver 3.0.0.2\" target=\"_blank\">Appium.WebDriver<\/a>\u300d\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002)<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">using System;\r\nusing OpenQA.Selenium.Appium.Windows;\r\nusing OpenQA.Selenium.Remote;\r\n\r\nnamespace WinAppDriverTest\r\n{\r\n    class Program\r\n    {\r\n        private const string WindowsApplicationDriverUrl = &quot;http:\/\/127.0.0.1:4723&quot;;\r\n        private const string CalculatorAppId = &quot;Microsoft.WindowsCalculator_8wekyb3d8bbwe!App&quot;;\r\n        protected static WindowsDriver&lt;WindowsElement&gt; session;\r\n\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            string serverPath = System.IO.Path.Combine(\r\n                System.Environment.GetFolderPath(\r\n                    System.Environment.SpecialFolder.ProgramFilesX86\r\n                ), @&quot;Windows Application Driver&quot;, &quot;WinAppDriver.exe&quot;\r\n            );\r\n            System.Diagnostics.Process.Start(serverPath);\r\n\r\n            DesiredCapabilities appCapabilities = new DesiredCapabilities();\r\n            appCapabilities.SetCapability(&quot;app&quot;, CalculatorAppId);\r\n            session = new WindowsDriver&lt;WindowsElement&gt;(new Uri(WindowsApplicationDriverUrl), appCapabilities);\r\n            session.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(1.5));\r\n\r\n            \/\/ LeftClick on &quot;One&quot; at (75,20)\r\n            Console.WriteLine(&quot;LeftClick on \\&quot;One\\&quot; at (75,20)&quot;);\r\n            string xp1 = &quot;\/\/*&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;NumberPad\\&quot;]&#x5B;@Name=\\&quot;Number pad\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;num1Button\\&quot;]&#x5B;@Name=\\&quot;One\\&quot;]&quot;;\r\n            var winElem1 = session.FindElementByXPath(xp1);\r\n            if (winElem1 != null)\r\n            {\r\n                winElem1.Click();\r\n            }\r\n            else\r\n            {\r\n                Console.WriteLine($&quot;Failed to find element {xp1}&quot;);\r\n                return;\r\n            }\r\n\r\n            \/\/ LeftClick on &quot;Two&quot; at (44,20)\r\n            Console.WriteLine(&quot;LeftClick on \\&quot;Two\\&quot; at (44,20)&quot;);\r\n            string xp2 = &quot;\/\/*&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;NumberPad\\&quot;]&#x5B;@Name=\\&quot;Number pad\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;num2Button\\&quot;]&#x5B;@Name=\\&quot;Two\\&quot;]&quot;;\r\n            var winElem2 = session.FindElementByXPath(xp2);\r\n            if (winElem2 != null)\r\n            {\r\n                winElem2.Click();\r\n            }\r\n            else\r\n            {\r\n                Console.WriteLine($&quot;Failed to find element {xp2}&quot;);\r\n                return;\r\n            }\r\n\r\n            \/\/ LeftClick on &quot;Three&quot; at (36,20)\r\n            Console.WriteLine(&quot;LeftClick on \\&quot;Three\\&quot; at (36,20)&quot;);\r\n            string xp3 = &quot;\/\/*&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;NumberPad\\&quot;]&#x5B;@Name=\\&quot;Number pad\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;num3Button\\&quot;]&#x5B;@Name=\\&quot;Three\\&quot;]&quot;;\r\n            var winElem3 = session.FindElementByXPath(xp3);\r\n            if (winElem3 != null)\r\n            {\r\n                winElem3.Click();\r\n            }\r\n            else\r\n            {\r\n                Console.WriteLine($&quot;Failed to find element {xp3}&quot;);\r\n                return;\r\n            }\r\n\r\n            \/\/ LeftClick on &quot;Plus&quot; at (19,18)\r\n            Console.WriteLine(&quot;LeftClick on \\&quot;Plus\\&quot; at (19,18)&quot;);\r\n            string xp4 = &quot;\/\/*&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;StandardOperators\\&quot;]&#x5B;@Name=\\&quot;Standard operators\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;plusButton\\&quot;]&#x5B;@Name=\\&quot;Plus\\&quot;]&quot;;\r\n            var winElem4 = session.FindElementByXPath(xp4);\r\n            if (winElem4 != null)\r\n            {\r\n                winElem4.Click();\r\n            }\r\n            else\r\n            {\r\n                Console.WriteLine($&quot;Failed to find element {xp4}&quot;);\r\n                return;\r\n            }\r\n\r\n            \/\/ LeftClick on &quot;Four&quot; at (57,18)\r\n            Console.WriteLine(&quot;LeftClick on \\&quot;Four\\&quot; at (57,18)&quot;);\r\n            string xp5 = &quot;\/\/*&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;NumberPad\\&quot;]&#x5B;@Name=\\&quot;Number pad\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;num4Button\\&quot;]&#x5B;@Name=\\&quot;Four\\&quot;]&quot;;\r\n            var winElem5 = session.FindElementByXPath(xp5);\r\n            if (winElem5 != null)\r\n            {\r\n                winElem5.Click();\r\n            }\r\n            else\r\n            {\r\n                Console.WriteLine($&quot;Failed to find element {xp5}&quot;);\r\n                return;\r\n            }\r\n\r\n            \/\/ LeftClick on &quot;Five&quot; at (80,19)\r\n            Console.WriteLine(&quot;LeftClick on \\&quot;Five\\&quot; at (80,19)&quot;);\r\n            string xp6 = &quot;\/\/*&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;NumberPad\\&quot;]&#x5B;@Name=\\&quot;Number pad\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;num5Button\\&quot;]&#x5B;@Name=\\&quot;Five\\&quot;]&quot;;\r\n            var winElem6 = session.FindElementByXPath(xp6);\r\n            if (winElem6 != null)\r\n            {\r\n                winElem6.Click();\r\n            }\r\n            else\r\n            {\r\n                Console.WriteLine($&quot;Failed to find element {xp6}&quot;);\r\n                return;\r\n            }\r\n\r\n            \/\/ LeftClick on &quot;Six&quot; at (34,18)\r\n            Console.WriteLine(&quot;LeftClick on \\&quot;Six\\&quot; at (34,18)&quot;);\r\n            string xp7 = &quot;\/\/*&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;NumberPad\\&quot;]&#x5B;@Name=\\&quot;Number pad\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;num6Button\\&quot;]&#x5B;@Name=\\&quot;Six\\&quot;]&quot;;\r\n            var winElem7 = session.FindElementByXPath(xp7);\r\n            if (winElem7 != null)\r\n            {\r\n                winElem7.Click();\r\n            }\r\n            else\r\n            {\r\n                Console.WriteLine($&quot;Failed to find element {xp7}&quot;);\r\n                return;\r\n            }\r\n\r\n            \/\/ LeftClick on &quot;Equals&quot; at (59,29)\r\n            Console.WriteLine(&quot;LeftClick on \\&quot;Equals\\&quot; at (59,29)&quot;);\r\n            string xp8 = &quot;\/\/*&#x5B;@ClassName=\\&quot;ApplicationFrameWindow\\&quot;]\/Window&#x5B;@Name=\\&quot;Calculator\\&quot;]&#x5B;@ClassName=\\&quot;Windows.UI.Core.CoreWindow\\&quot;]\/Group&#x5B;@ClassName=\\&quot;LandmarkTarget\\&quot;]\/Group&#x5B;@AutomationId=\\&quot;StandardOperators\\&quot;]&#x5B;@Name=\\&quot;Standard operators\\&quot;]\/Button&#x5B;@AutomationId=\\&quot;equalButton\\&quot;]&#x5B;@Name=\\&quot;Equals\\&quot;]&quot;;\r\n            var winElem8 = session.FindElementByXPath(xp8);\r\n            if (winElem8 != null)\r\n            {\r\n                winElem8.Click();\r\n            }\r\n            else\r\n            {\r\n                Console.WriteLine($&quot;Failed to find element {xp8}&quot;);\r\n                return;\r\n            }\r\n\r\n            \/*\r\n            if (session != null)\r\n            {\r\n                session.Quit();\r\n                session = null;\r\n            }\r\n            *\/\r\n\r\n            Console.Write(&quot;Press any key to continue . . . &quot;);\r\n            Console.ReadKey(true);\r\n        }\r\n    }\r\n}<\/pre>\n<h4 class=\"style4a\">\u5b9f\u884c\u753b\u9762<\/h4>\n<p>\u4e0b\u56f3\u306e\u901a\u308a\u3001WinAppDriver\u3092\u4f7f\u3063\u3066\u554f\u984c\u306a\u304f\u96fb\u5353\u306e\u64cd\u4f5c\u304c\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n<p><a href=\"https:\/\/www.ka-net.org\/blog\/wp-content\/uploads\/WinAppDriver_UI_Recorder_04.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ka-net.org\/blog\/wp-content\/uploads\/WinAppDriver_UI_Recorder_04.gif\" alt=\"\" width=\"991\" height=\"600\" class=\"alignnone size-full wp-image-10508\" \/><\/a><\/p>\n<div id=\"single_banner_area2\" class=\"clearfix one_banner\">\n<div class=\"single_banner single_banner_left\">\n<script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\r\n<!-- \u8a18\u4e8b\u4e2d(\u30c7\u30a3\u30b9\u30d7\u30ec\u30a4\u5e83\u544a\u30e6\u30cb\u30c3\u30c8) -->\r\n<ins class=\"adsbygoogle\"\r\n     style=\"display:block\"\r\n     data-ad-client=\"ca-pub-7306936664602087\"\r\n     data-ad-slot=\"5429724765\"\r\n     data-ad-format=\"auto\"\r\n     data-full-width-responsive=\"true\"><\/ins>\r\n<script>\r\n     (adsbygoogle = window.adsbygoogle || []).push({});\r\n<\/script>\n<\/div>\n<div class=\"single_banner single_banner_right\">\n<a href=\"\" target=\"_blank\"><img decoding=\"async\" src=\"\" alt=\"\" title=\"\" \/><\/a>\n<\/div>\n<\/div>\n\n<h4 class=\"style4a\">\u611f\u60f3<\/h4>\n<p>\u8efd\u304f\u89e6\u3063\u3066\u307f\u305f\u611f\u3058\u3001\u8981\u7d20\u306eXPath\u3092\u53d6\u5f97\u3067\u304d\u308b\u70b9\u306f\u4fbf\u5229\u3067\u3057\u305f\u304c\u3001\u751f\u6210\u3055\u308c\u308b\u30b3\u30fc\u30c9\u306f\u5197\u9577\u3067\u3001<span style=\"color: #ff0000; font-weight: bold;\">Excel\u306e\u30de\u30af\u30ed\u8a18\u9332\u6a5f\u80fd\u306e\u3088\u3046\u306a\u5370\u8c61<\/span>\u3092\u53d7\u3051\u307e\u3057\u305f\u3002<\/p>\n<p>UI\u8981\u7d20\u3092\u8abf\u3079\u308b\u30c4\u30fc\u30eb\u3068\u3057\u3066\u3001\u73fe\u6642\u70b9(2018\u5e746\u6708)\u3067\u306f<a href=\"https:\/\/msdn.microsoft.com\/ja-jp\/library\/dd318521.aspx\" title=\"Inspect (Windows)\" target=\"_blank\">Inspect<\/a>\u306e\u4ee3\u308f\u308a\u306b\u306a\u308b\u3082\u306e\u3067\u306f\u306a\u304f\u3001Inspect\u3068\u4f75\u7528\u3059\u308b\u3053\u3068\u3067\u3001WinAppDriver\u3092\u4f7f\u3063\u305f\u30b3\u30fc\u30c9\u304c\u66f8\u304d\u3084\u3059\u304f\u306a\u308b\u30c4\u30fc\u30eb\u306a\u306e\u3060\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>\u307e\u3060\u3001\u51fa\u59cb\u3081\u306e\u30c4\u30fc\u30eb\u306a\u306e\u3067\u3001\u4eca\u5f8c\u306b\u671f\u5f85\u3067\u3059\u306d\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"\u4e0b\u8a18\u8a18\u4e8b\u306b\u3042\u308b\u901a\u308a\u3001\u300cWinAppDriver UI Recorder\u300d\u304c\u516c\u958b\u3055\u308c\u305f\u306e\u3067\u3001\u3055\u3063\u305d\u304f\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\u3002 \u7c73Microsoft\u306f20\u65e5\uff08\u73fe\u5730\u6642\u9593\uff09\u3001\u65b0\u3057\u3044\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30c4\u30fc\u30eb\u300cWinAppDriver UI R [&hellip;]","protected":false},"author":1,"featured_media":10505,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"[WinAppDriver UI Recorder\u3092\u8a66\u3057\u3066\u307f\u307e\u3057\u305f]","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[132,25,154],"tags":[],"class_list":["post-10504","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-windows10","category-windows","category-selenium"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.ka-net.org\/blog\/wp-content\/uploads\/WinAppDriver_UI_Recorder_01.jpg","jetpack_shortlink":"https:\/\/wp.me\/p4UZZr-2Jq","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/10504","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10504"}],"version-history":[{"count":2,"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/10504\/revisions"}],"predecessor-version":[{"id":10510,"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/10504\/revisions\/10510"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=\/wp\/v2\/media\/10505"}],"wp:attachment":[{"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10504"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}