WinAppDriver의 샘플을 이동하기 전에

11730 단어 WinAppDriver
Windows 애플리케이션으로 자동화 UI 테스트를 가져오려고 했는데 MS에서 만든 Windows Application Driver(이하 WinAppDriver)를 사용할 수 있을 것 같다는 조사 결과가 나왔다.Visual Studio의 Enterprise에는 테스트 도구가 내장되어 있는 것 같지만 2019가 끝난 후 이쪽을 사용한 기술도 있다.고가의 Enterprise를 사지 않고도 무료로 이용할 수 있다는 것은 정말 드문 일이다.
나는 즉시 Giithub의 샘플을 이동해 보고 싶었지만, 매우 고생스러워서 적어 두었다.
어휘 정리
윈앱드라이브와 관련해서는 검색 시 셀레니움, 앱피움 등 각종 도구의 이름이 나와 혼란스럽다.내가 이해할 수 있는 범위 내에서 정리부터 해.만약 잘못이 있다면 반드시 지적해 주십시오.
  • 테스트 스크립트
    "단추를 누르십시오", "결과가 0인지 확인하십시오"등의 순서가 적힌 스크립트입니다.모든 테스트 주자는 각양각색의 프로그램 언어로 기술할 수 있다.한 줄 한 동작으로 기술할 수 있을 뿐만 아니라 중복과 방법화도 할 수 있어 습관적인 언어로 기술하기에 매우 편리하다.
  • 테스트 주자
    테스트 스크립트를 설명하고 운전자에게 제어 지시를 하는 실행 디스크.대상이 브라우저라면 웹 드라이버, 윈도 제어라면 윈도 앱 드라이브 등이라고 할 수 있다.
  • Selenium
    정규 자동화 주자.여기서 너무 신경 쓰지 마세요.
  • Appium
    이것도 경전이다.Selenium의 파생?확장판?node.js로 이동합니다.MS가 앱피움에서 Win AppDriver를 호출할 수 있어서 앱피움이 Win 애플리케이션을 제어할 수 있었다.
    앱피움이 있어 웹 앱, 윈 앱, 모바일 앱 등에 사용하려면 따로 설치하거나 설정해서 사용할 수 있지만, 이번에 샘플만 실행하면 비주얼스튜디오가 플러그인으로 가져오기 때문에 크게 신경 쓰지 않아도 된다.
  • WinAppDriver
    스크립트를 사용하여 Windows 10을 자동으로 제어하기 위한 드라이버입니다.공구 본체는 Giithub에 공개되었지만, 기원화되지 않았다.문서와 샘플만 공개 창고에서 관리한다.그것들을 복제해서 사용하는 것 외에 발행판 바이너리 설치 프로그램을 떨어뜨리고 설치해야 한다(후술).
  • inspect.exe
    Windows SDK에 포함된 도구입니다.Windows에서 열린 창의 버튼과 같은 GUI 구성 요소의 이름 등을 조사할 수 있습니다.WinAppDriver와는 직접적인 관계가 없지만 스크립트를 만드는 데 없어서는 안 될 실용 프로그램이다.
  • WinAppDriver UI 레코더
    사용자 작업을 기록하고 C# 테스트 스크립트를 생성하는 도구입니다.실제 운용에서는 시나리오를 0부터 쓰는 것보다 대충 기록한 뒤 수정하는 게 낫다.다음 기사에서 언급해 주시기 바랍니다.
  • 샘플을 이동하기 전에
    윈앱드라이브의 공식 창고는여기.이다.다음은 컴퓨터 애플리케이션을 조작한 샘플에 대해 설명한 영상여기.이다.테스트는 Visual Studio에서 열린 C# 항목으로 제공됩니다.
    깨끗한 환경이 아니기 때문에 애플 노드를 이동합니다.js가 따로 필요한지 모르겠지만 git bash가 npm를 찾지 못해서 대충 들어갔어요.
    Windows 10을 개발자 모드로 설정
    여기를 참조하시오.
    https://www.ipentec.com/document/windows-windows-10-set-developer-mode。
    inspect.exe 가져오기(Windows SDK)
    이미 있어서 기억이 안 나요. 아마 여기서 버전에 따라 다운로드한 것 같아요.
    https://developer.microsoft.com/en-us/windows/downloads/sdk-archive
    애니메이션으로 설명하는 경로가 아니라 우리 집에서
    C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64\inspect.exe
    
    예.Windows 10의 버전은 "10.01763.0"에 해당합니다.17763은 2018 옥토버 업데이트죠.
    [추기] 다양한 설치 방법이 있는 것 같아요.
    https://stackoverflow.com/questions/34760513/how-to-install-the-inspect-tool-on-windows-10
    WinAppDriver 호스트 도입
    Giithub의 Release 페이지에서 WindowsApplication Driver로 이동합니다.msi를 다운로드하고 설치합니다.이번에는 1.1.1을 사용하겠습니다.실행 바이너리
    C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe
    
    기다려.시동을 걸면 이런 화면이 대기 상태로 변하기 때문에 그대로 둔다.

    WinAppDriver 창고 가져오기
    영상에서 명령 알림부터git로 clone을 진행합니다.나는 SouceTree로 적당한 디렉터리에 복제했다.git 환경이 없는 사람은 ZIP로 떨어져서 펼쳐도 되잖아.
    Visual Studio 2017에서 준비
    비디오
    \WinAppDriver\Samples\C#\CalculatorTest\CalculatorTest.sln
    
    Visual Studio가 열립니다.
    의존 라이브러리 부족ツール -> NuGetパッケージマネージャー -> ソリューションのNuGetパッケージの管理그런 다음 복구 버튼을 클릭하여 필요한 구성 요소를 자동으로 설치합니다.여기 몇 개 도서관에서 업데이트가 있을 것 같은데 업데이트하면 안 될 것 같아요.모두 최신 버전이면 테스트 실행 시
    DesiredCapabilitiesは旧形式です
    (DesiredCapabilities are no longer supported.)
    
    의 오류입니다.샘플 항목에 지정된 버전을 그대로 사용합니다.
    참조: https://github.com/Microsoft/WinAppDriver/issues/497
    나는 이렇게 빌딩이 통과할 수 있을 것이라고 생각한다.직접 수행할 수 없는 프로젝트이기 때문에'구축'만 있습니다.
    비디오에서 볼 수 있는 왼쪽 사이드바의 테스트 자원 관리자가 없으면テスト -> ウインドウ -> テストエクスプローラー열다

    나는 이런 목록이 나타날 것이라고 생각한다. (사진은 통과한 후에 녹색 검사 아이콘으로 바뀌었지만 처음에는 모두 파란색! 아이콘이었다.)Addition(더하기), Division(나누기) 등 5개의 스크립트가 있습니다.마우스 오른쪽 버튼을 개별적으로 클릭하고 선택한 테스트 실행에서 를 수행할 수 있습니다.
    하지만 실제로는 아무 일도 일어나지 않았다.출력을 보면 0이 실행되었고 하나도 실행되지 않았다.

    이 문제를 해결해야 돼요.ツール -> オプション ->テスト다음을 클릭합니다.パフォーマンスを向上させるため、テスト アセンブリ フォルダーにあるか、runsettings ファイルに指定されているテスト アダプターのみを使用してください확인란을 선택합니다.

    참조: https://github.com/Microsoft/WinAppDriver/issues/573
    이렇게 되면 계산기가 작동하지만 Addition 테스트에 예외가 생겨서 불합격입니다.버튼 이름 등은 영어판 Windows를 전제로 작성됐으며 일본어의 계산기에는 지정된 버튼이 없다.
    개별 테스트 방법은 ScennarioStandard입니다.예를 들어 Addition과 같이 cs 파일에 표시됩니다.
            public void Addition()
            {
                // Find the buttons by their names and click them in sequence to peform 1 + 7 = 8
                session.FindElementByName("One").Click();
                session.FindElementByName("Plus").Click();
                session.FindElementByName("Seven").Click();
                session.FindElementByName("Equals").Click();
                Assert.AreEqual("8", GetCalculatorResultText());
            }
    
    그래서 인스펙트.exe를 시작하고 계산기의 단추를 확인하면Name 속성의 내용을 알 수 있습니다.일본어 버전의 계산기는 다음과 같이 수정해야 한다.
            public void Addition()
            {
                // Find the buttons by their names and click them in sequence to peform 1 + 7 = 8
                session.FindElementByName("1").Click();
                session.FindElementByName("プラス").Click();
                session.FindElementByName("7").Click();
                session.FindElementByName("等号").Click();
                Assert.AreEqual("8", GetCalculatorResultText());
            }
    
    또한 처음에 리셋된clear 메서드와 계산 결과의 텍스트 필드 결과에서 여분의 문자열을 제외한GetCalculator ResultText 메서드도 다음과 같이 변경해야 합니다(주석 부분은 원작입니다).
    public void Clear()
            {
                //session.FindElementByName("Clear").Click();
                session.FindElementByName("クリア").Click();
                Assert.AreEqual("0", GetCalculatorResultText());
            }
    
        private string GetCalculatorResultText()
            {
                //return calculatorResult.Text.Replace("Display is", string.Empty).Trim();
                return calculatorResult.Text.Replace("表示は ", string.Empty).Replace(" です", string.Empty).Trim();
    
            }
    
    참고로 나눗셈 Division 테스트에서는 Find ElementByName() 방법 대신 Fin dElementBy Accessibility Id()를 사용하여num 8Buton의 식별자로 접근했습니다.
        session.FindElementByAccessibilityId("num8Button").Click();
    
    나눗셈과 뺄셈은 FindElementByXPath입니다.
        session.FindElementByXPath("//Button[@Name='Nine']").Click();
    
    탭이것들은 언어에 의존하지 않는다.그러나 XPath는 UWP, WPF, XAML 등 UI 디자인을 위한 앱인가요?
    아무래도 개발할 때 이 부분에서도 게으름을 피우지 않고 시스템 명칭을 만들면 평가가 순조롭게 이뤄질 것으로 보인다.
    따라서 몇 가지 막혔지만 이렇게 하면 컴퓨터가 자동으로 작동하고 파치 버튼을 누르면 결과를 확인하기 전에 자동화할 수 있다.
    실제 스크립트는 더욱 복잡해지고 버튼 이름을 일일이 체크하는 것도 어려워지기 때문에 상술한 UI 레코더를 이용하여 대략적인 스크립트를 만드는 것이 합리적이죠.다음에도 그쪽에 도전해보고 싶어요.

    좋은 웹페이지 즐겨찾기