반응형

 

Appium 테스트 드라이버에게 내 단말 및 환경 세팅을 알려주기 위해 desired capabilities라는 JSON 객체를 사용합니다. 

 

desired capability는 Appium 에 단말(Android/iOS) 정보 및 앱 정보를 입력해줘야 합니다.

 

* desired capability 파라미터 

- platformName : 사용할 모바일 OS 

- platformVersion : 사용할 모바일 플랫폼 버전

- deviceName : 사용할 모바일 단말 이름 (adb devices > adb 연결된 장치 이름) 

- appActivity : 패키지에서 최초 실행할 앱 액티비티 (ex. .DialtactsActivity)

- app : Appium 기동할 앱의 위치

- appPackage : 패키지명 (ex. com.samsung.android.dialer)

- browerName : 브라우저 이름

 

사용방법 :

desired_caps = dict(
    deviceName='Galaxy S21',
    platformName='Android',
    browerName='chrome'
)

 

보다 자세한 설명은 공식 홈페이지에서 확인하실 수 있습니다.

참고 URL : https://appium.io/docs/en/writing-running-appium/caps/

반응형

'software testing > appium' 카테고리의 다른 글

기초 - Mobile Web 실행  (0) 2023.01.30
Appium 설치 - Appium  (0) 2022.03.14
Appium 설치 - Node.js  (0) 2022.03.12
Appium 설치 - Android SDK  (0) 2022.03.11
Appium 설치 - JDK (Window Version)  (0) 2022.03.10
반응형

설치 프로그램 목록

Appium을 기동하기 위해서는 아래와 같이 4가지 프로그램 설치가 필요합니다. 

1) JDK(Java Development Kit)
2) Android SDK
3) Node.js
4) Appium

 

1) Appium 설치 

1.Appium 사이트에 들어가서 Appium을 다운로드하여 설치합니다.

(2022년 2월 1일 현재 1.22.0 버전이 최신버전입니다.)

 

Appium: Mobile App Automation Made Awesome.

Appium Philosophy Appium is built on the idea that testing native apps shouldn't require including an SDK or recompiling your app. And that you should be able to use your preferred test practices, frameworks, and tools. Appium is an open source project and

appium.io

 

 
2) Appium 설정
[Edit Configurations] 버튼을 클릭합니다.
 
 

아래와 같이 ANDROID_HOME 과 JAVA_HOME이 나오는지 확인 후 [Save and Restart] 버튼을 클릭합니다.

(만약 설정이 안되어 있을 경우, 환경 변수 설정에서 설정했던 것과 동일하게 입력합니다.)
 

 

이렇게 appium 과정은 끝났습니다~!

반응형

'software testing > appium' 카테고리의 다른 글

기초 - Mobile Web 실행  (0) 2023.01.30
Appium DesiredCapabilities 설정 방법  (0) 2023.01.26
Appium 설치 - Node.js  (0) 2022.03.12
Appium 설치 - Android SDK  (0) 2022.03.11
Appium 설치 - JDK (Window Version)  (0) 2022.03.10
반응형

설치 프로그램 목록

Appium을 기동하기 위해서는 아래와 같이 4가지 프로그램 설치가 필요합니다. 

1) JDK(Java Development Kit)
2) Android SDK
3) Node.js
4) Appium

 

1) Node.js 설치 

1. Node.js에서 최신 Node.js를 다운로드하여 설치합니다.

 

 

다운로드 | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

2. 환경변수 설정

윈도우키를 누르고 "시스템 환경 변수 편집" 을 입력하고 실행합니다.

[환경 변수] 버튼을 클릭합니다.

 

[새로 만들기] 버튼을 클릭합니다.

 

시스템 변수(S) 를 하기와 같이 입력 후 [확인] 버튼을 클릭합니다.

변수 이름 : NODE_HOME

변수 값 : C:\Program Files\nodejs

 

시스템 변수(S)의 Path 를 클릭합니다.

[새로 만들기(N)] 버튼을 클릭합니다.

%NODE_HOME% 를 입력합니다.

[새로 만들기(N)] 버튼을 클릭합니다.

%NODE_HOME%\node_modules\npm\bin 를 입력합니다.

[확인] 버튼을 클릭합니다.

반응형
반응형

설치 프로그램 목록

Appium을 기동하기 위해서는 아래와 같이 4가지 프로그램 설치가 필요합니다. 

1) JDK(Java Development Kit)
2) Android SDK
3) Node.js
4) Appium

 

1) Android Studio 설치 

Android Studio에서 Anroid Studio 를 다운 받아서 설치합니다.

 

 

 

2) Android SDK 설치 

Android Studio 설치가 완료되면 환경 변수 설정이 필요합니다.

 

윈도우키를 누르고 "시스템 환경 변수 편집" 입력 실행합니다.

시스템 속성 > 환경 변수로 들어가서 [새로 만들기] 버튼을 클릭합니다.

새 시스템 변수에 하기와 같이 입력하고 [확인] 버튼을 클릭합니다.

 

변수 이름 : ANDROID_HOME

변수 값 : C:\Users\{컴퓨터 로그인이름}\AppData\Local\Android\Sdk

 

 

환경 변수 편집에서 하기와 같이 입력합니다.

 

[새로 만들기(N)] 버튼을 클릭

%ANDROID_HOME%\platform-tools 입력

[새로 만들기(N)] 버튼을 클릭

%ANDROID_HOME%\tools 입력

[새로 만들기(N)] 버튼을 클릭

%ANDROID_HOME%\tools\bin

[확인] 버튼을 클릭

 

cmd창을 열고, adb를 입력 후 엔터를 치면 하기와 같이 나옵니다.

 

반응형
반응형

설치 프로그램 목록

Appium을 기동하기 위해서는 아래와 같이 4가지 프로그램 설치가 필요합니다. 

1) JDK(Java Development Kit)
2) Android SDK
3) Node.js
4) Appium

 

1) JDK 설치 

   

   1. Oracle의 홈페이지에 가서 JDK 를 다운로드하여 설치합니다. (JDK 다운을 위해서 오라클 회원가입이 필요합니다.)

      링크 : Java Downloads | Oracle

 

 2. 왼쪽 하단의 윈도우 버튼을 클릭하여 "고급" 이라는 단어를 입력하여 "고급 시스템 설정 보기" 를 클릭합니다.

   3. 고급 탭에서 맨 아래에 시스템 환경변수를 클릭합니다.

 

   4. 새로 만들기 버튼을 클릭하여 뜨는 팝업 창에 하기와 같이 입력하고 확인 버튼을 클릭합니다.

      참고로 변수 값은 설치하는 버전에 따라 다를 수 있으니, C:\Program Files\Java\ 경로를 들어가서

      버전을 입력하시면 됩니다.

     

      변수 이름 : JAVA_HOME

      변수 값 : C:\Program Files\Java\jdk-12.0.1 

       

   5. 시스템 변수의 Path 를 더블 클릭합니다.

      6. 새로 만들기 버튼을 클릭하여 하기와 같이 입력하고 확인 버튼을 클릭합니다.

         

         %JAVA_HOME%\bin

 

   7. 왼쪽 하단의 윈도우 버튼을 클릭하여 cmd 를 입력하여 "명령 프롬프트" 를 클릭합니다.

   8. CMD창에 java -version 을 입력하고 엔터를 쳐서 아래와 같이 자바 버전이 나오면 설치 및 환경 변수 설정 완료입니다. 

 

 

반응형
반응형

appium을 사용하기 위한 환경 설정을 하고 난 후, appium inspector 를 통하여 또는 테스트 스크립트를 실행하여 앱 호출을 했을 때 앱 실행 후 아래와 같은 메시지가 보이며 바로 종료되는 현상이 발생할 때가 있습니다. 

 

Could not proxy command to remote server. Original error: Error: read ECONNRESET

 

이런 경우, 해결 방법은 아래와 같습니다.

 

1. appium server 종료

2. 터미널에서 adb devices 를 통하여 정상적으로 디바이스가 연결되었는지 확인

3. 터미널에서 아래와 같은 명령어 입력

adb uninstall io.appium.uiautomator2.server
adb uninstall io.appium.uiautomator2.server.test

4. appium server 시작

5. appium inspector 또는 테스트 스크립트 실행

반응형

'software testing > appium' 카테고리의 다른 글

Appium 설치 - Appium  (0) 2022.03.14
Appium 설치 - Node.js  (0) 2022.03.12
Appium 설치 - Android SDK  (0) 2022.03.11
Appium 설치 - JDK (Window Version)  (0) 2022.03.10
Appium 이란?  (0) 2022.03.01
반응형

이전 포스팅에서는 Locator의 종류를 설명했습니다.

 

이번 시간에는 Locator 사용방법을 설명드리겠습니다.

 

Selenium WebDriver에서 요소 찾기는 Selenium WebDriver 및 WebElement 클래스에서 제공하는 findElement() 및 findElements() 메서드를 사용하여 수행됩니다.

 

1. findElement() 메소드는 한개의 Web Element(웹요소) 를 동작하는데 사용합니다.  

    예 : driver.findElement(By.LocatorStrategy(“Locator Value”)

 

2. findElements() 메소드는 웹 페이지내의 Web Elements(웹요소들)을 동작하는데 사용합니다. 이 메소드는 목록 인터페이스를 통해 WebElement(웹요소) 목록을 반환하며, 이를 반복하고 작업을 수행할 수 있습니다.

 

    예 : List <WebElement> elementname = driver.findElements(By.Locator(“Locator Value”))

 

ID: ID 로케이터는 id 속성 값으로 WebElement를 찾는 데 사용됩니다. 대부분의 ID는 WebElement(웹요소)에 대해 고유합니다. 여기서 id 속성의 값을 매개변수로 전달해야 합니다.

 

사용방법 : driver.findElement(By.id(“element id”))

예 : driver.findElement(By.id(“nav-search-submit-button”))

 

Name: Name 로케이터는 이름 속성 값으로 WebElement를 식별하는 데 사용됩니다. 동일한 이름 로케이터를 가진 여러 요소가 있는 경우 페이지의 첫 번째 요소가 선택됩니다.

 

사용방법 : driver.findElement(By.name(“element name”))

예 : driver.findElement(By.name(“email”))

 

ClassName: ClassName 로케이터는 class 속성 값으로 WebElement를 식별하는데 사용합니다.

 

사용방법 : driver.findElement(By.className (“element class”))

예 : driver.findElement(By.className(“a-button-inner”))

 

 

 

TagName: TagName 로케이터는 findElements() 메소드와 함께 웹페이지에서 유사한 여러 항목을 식별하는 데 사용됩니다. HTML 태그의 도움으로 WebElements를 찾는 데 사용됩니다.

 

사용방법 : driver.findElement (By.tagName (“HTML tag name”));

예 : List<WebElement> lists=driver.findElements(By.tagName(“a”))

 

Link Text: 링크 텍스트는 정확한 텍스트로 요소를 식별하는 데 사용됩니다.

 

사용방법 : driver.findElement(By.linkText (“linktext”))

예 : driver.findElement(By.linkText(“Today's Deals”))

 

 

PartialLinkText: 이 방법은 링크 텍스트의 일부가 포함된 요소를 찾는 데 도움이 됩니다. (linkText는 텍스트 전부, PartialLinkText는 일부라고 생각하시면 됩니다.)

 

사용방법: driver.findElement(By.partialLinkText (“partiallinktext”))

예 : driver.findElement(By. partialLinkText (“Service”))

 

Xpath: XPath는 XML 경로 언어를 나타내며, 페이지의 HTML 구조를 탐색하는 데 사용됩니다. 또한 HTML DOM 구조를 사용하여 웹 페이지에서 요소의 위치를 ​​찾기 위해 HTML 및 XML 문서 모두에 사용할 수 있습니다.

 

사용방법 : driver.findElement(By.xpath (<xpath>))

예: driver.findElement(By.xpath("//input[@id='twotabsearchtextbox']")

 

CSS Selector(CSS stands for Cascading Style Sheet): CSS 선택기는 요소 선택기와 웹 페이지 내에서 웹 요소를 식별하는 값의 조합입니다. HTML 태그, 속성, ID 및 클래스의 문자열 표현입니다.

사용방법 : driver.findElement(By.cssSelector(“css selector”))

예 : driver.findElement(By.cssSelector(“#twotabsearchtextboxl”))

 
 

 

참조:

 

다음 시간에는 위 Locators 중 많이 사용되는 것들로 예제를 만들어서 동작시켜보도록 해보겠습니다.

반응형
반응형

Locator 란?

 

웹 페이지 내에서 웹 요소를 고유하게 식별할 수 있는 주소라고 할 수 있습니다. Locator는 작업을 수행하는데 필요한 웹 요소에 대해 Selenium에 알려주는 웹 요소의 HTML 속성입니다. 

쉽게 설명하자면 이렇습니다.

 

온라인으로 물건을 구매한다고 가정을 하겠습니다. 열심히 온라인으로 구매할 물건을 검색하여 최저가의 물건을 찾았고, 배송지를 입력하고 결제를 합니다. 

 

내가 살 물건은 어떤 행위를 해야할 대상입니다. 해당 대상을 찾았으면 배송지가 어디인지를 입력해야 하는데 그 배송지는 Locator라고 볼 수 있습니다. 해당 Locator 를 찾으면 결제 즉, 행동입니다. 그 행동은 클릭이 될 수 있고 글을 입력할 수 있는 것 등이 될 수 있습니다.

 

그러면 Locator는 종류가 무엇이고 어떻게 찾을 수 있을까요?

 

Locator의 종류는 아래와 같습니다.

- ID

- ClassName

- Name

- LinkText

- Xpath

-CSS Selector

 

다양한 Locator 들 가운데 일반적으로 가장 많이 사용되는 경우는 Xpath와 CSS Selector 입니다. (그 외에도 많이 사용합니다.)

 

Locator 를 찾는 방법을 알려드리겠습니다.

 

- 웹 브라우저(chrome)를 열어 놓습니다. (ex. google)

- F12 를 눌러서 개발자도구를 엽니다.

    1. 웹 요소를 식별하기 위해 검사 아이콘을 클릭합니다.

    2. 검사할 대상(요소)을 클릭합니다.

    3. 요소를 기록해둡니다. (ex. CLASS, ID..)

 

이와 같은 방법을 통하여 요소를 찾을 수 있습니다. 다음 시간에는 Locator 들을 하나씩 사용하는 예시를 알려드리겠습니다.

반응형
반응형

Appium은 네이티브, 하이브리드 및 웹 애플리케이션의 자동화된 테스트를 수행하기 위한 오픈 소스 도구입니다. 

Appium은 표준 API를 사용하여 iOS 및 Android 플랫폼에서 테스트 케이스 생성을 허용하는 크로스 플랫폼 특성 및 기본적으로 Selenium에서 요소를 추출하고 Selenium의 WebDriver를 통해 iOS 및 Android 앱과 적극적으로 상호 작용하기 위해 내부적으로 JSON Wire Protocol을 사용합니다 .

서버-클라이언트 아키텍처를 통해 REST API를 사용하는 웹 서버는 클라이언트에 직접 연결되어 명령을 수신하고 지정된 모바일 장치를 통해 추가로 실행합니다. 

Appium은 Node.js로 작성된 HTTP 서버이기 때문에 주어진 명령을 실행한 결과를 번거로움 없이 분석할 수 있습니다. Appium 테스트의 중요한 이점 중 하나는 자동화를 위해 앱을 다시 컴파일하는 수고를 덜어준다는 것입니다. Selenium WebDriver의 광범위한 사용으로 이 도구는 모바일 애플리케이션 테스트의 확실한 기술과 결합된 API를 확장 합니다 .

 

Appium을 모바일 자동화 도구로 사용하는 이유는?

이미 알고 있듯이 Appium은 동일한 API를 사용하여 Windows, iOS 및 Android를 포함한 여러 플랫폼에서 테스트를 작성할 수 있는 크로스 플랫폼 도구입니다. 추가하기 위해 Appium을 사용하면 휴대폰, 태블릿 등과 같은 실제 장치에서 자동화된 테스트를 실행할 수 있습니다.

모바일 앱 테스팅 서비스 제공자들 사이에서 Appium은 모바일 앱의 회귀 테스팅을 단순화 하는 데 도움이 되기 때문에 인기가 있습니다 . 이 측면은 주로 새로운 기능과 관련하여 자주 업데이트되는 대규모 모바일 앱에 중점을 둡니다.

다음은 Appium이 모바일 자동화를 위한 가장 안정적인 도구임을 강조하는 몇 가지 필수 지침입니다.

  • Appium은 Selenium Server와 유사한 백그라운드에서 실행하여 서버로 작동합니다.
  • 이 모바일 테스트 자동화 도구는 TestNG 테스트 프레임워크와 쉽게 일치할 수 있습니다.
  • Appium은 다양한 프로그래밍 언어와 다양한 유형의 프레임워크를 사용하여 개발된 모든 모바일 앱을 자동화하기에 충분히 효율적입니다.
  • Appium은 내장 UI Automator로 구성되어 있습니다. 그 기능은 자세한 정보 기록을 제공하고 포괄적인 보고 구조를 생성하는 것입니다.
  • 이 모바일 테스트 도구를 사용하면 테스트 코드에서 백엔드 API 및 데이터베이스에 대한 전체 액세스 권한을 얻어 제어할 수 있습니다.

Appium 작동 방식

Appium은 Node.js 플랫폼을 사용하여 작성된 'HTTP 서버'입니다. Webdriver JSON 유선 프로토콜을 사용하여 iOS 및 Android 세션을 구동할 수 있습니다. Appium Server를 초기화하기 전에 시스템에 Node.js를 사전 설치하는 것이 필수적입니다.

Appium이 다운로드되고 성공적으로 설치되는 즉시 서버가 머신에 배치되어 REST API를 노출합니다. 그 작업은 모바일 장치를 통해 해당 명령을 실행하기 위해 클라이언트로부터 직접 명령 요청과 함께 연결을 수신하는 것입니다. 그 결과 HTTP 응답을 통해 응답합니다. 또한 이 요청을 다시 실행하기 위해 모바일 테스트 자동화 프레임워크를 사용하여 해당 앱의 사용자 인터페이스를 작동합니다.

 

모바일 테스트 자동화를 위한 Appium의 이점

아래에 언급된 다른 모바일 테스트 자동화 도구와 비교할 때 Appium의 가장 중요한 이점은 다음과 같습니다.

  • Appium은 모든 플랫폼을 포괄하는 표준 자동화 API를 사용합니다. 따라서 테스트 중인 애플리케이션을 수정할 필요가 없습니다.
  • Appium은 거의 모든 유형의 테스트 프레임워크와 호환됩니다.
  • 모바일 자동화 도구는 Java, PHP, Node, Ruby 및 Python을 포함한 다양한 프로그래밍 언어를 지원합니다.
  • 흥미롭게도 Java, JavaScript 및 Objective-C와 같은 다양한 프로그래밍 언어로 작성된 테스트 스크립트는 웹 드라이버와 조정됩니다.
  • 작동을 위해 모바일 장치에 Appium을 설치할 필요가 없습니다.
  • Appium은 네이티브 앱과 적극적으로 작업하기 위해 Selenium WebDriver JSON 유선 프로토콜을 사용합니다.

Appium 모바일 자동화 테스트 도구의 일반적인 이점은 다음과 같습니다.

 1. 무료

Appium은 쉽게 다운로드할 수 있는 무료 오픈 소스 도구입니다. 장치에 추가 설치가 필요하지 않으며 광범위한 커뮤니티 지원을 관리합니다.

 

2. 단순화된 작동

Appium은 Selenium WebDriver와 호환되므로 거의 모든 Selenium 기능에 액세스할 수 있습니다. 셀레늄 사용 이론에 대한 더 나은 지식을 얻기 위해 Appium은 이해하고 구현하기가 매우 쉽습니다.

 

3. 플랫폼 간 유연성

코드 변경 없이 iOS와 Android 모두에서 Appium 테스트를 실행할 수 있습니다. 또한 여러 플랫폼을 동시에 다루는 여러 테스트를 실행할 수도 있습니다.

 

4. CI 도구와 통합

Appium이 거의 모든 CI 도구와 통합될 수 있다는 것은 큰 장점입니다. (ex. Bamboo, Jenkins 등)

 

5. 녹음 및 재생

다른 자동화 도구와 마찬가지로 Appium은 녹음 및 재생 도구의 편리함을 제공합니다. 

 

결론

이 블로그에 이미 충분한 세부 정보가 나와 있으므로 Appium이 모바일 테스트 자동화에서 상당한 시장 점유율을 확보했다고 해도 과언이 아닙니다. 여러 옵션을 사용할 수 있으므로 Appium 테스트는 다양한 장치 및 OS 버전에서 실행할 수 있는 최고입니다. 앱 개발자와 테스터가 합쳐진 말을 들으면 Appium 테스트를 만드는 것이 쉽고 유연하게 구현할 수 있습니다.

반응형
반응형

테스트 자동화에서 가장 많이 사용하는 기능 5가지를 선정하라면, 하기와 같다.

  • get( )
  • wait( )
  • find_element( )
  • send_keys( )
  • click( )

 

1. get( )

get 명령은 새 브라우저를 시작하고 크롬 웹드라이버 에서 주어진 URL을 엽니다 . 단순히 문자열을 지정된 URL로 사용하고 테스트 목적으로 엽니다.

Selenium IDE를 사용한다면 open 명령어와 비슷합니다.

예시:

driver.get("https://google.com");

'드라이버'는 모든 작업을 수행할 Chrome 웹 드라이버이며 위의 명령을 실행한 후 다음과 같이 표시됩니다.

 

wait()

wait 는 말 그대로 ‘기다리라’는 뜻이다. implicitly wait 또는 explicitly wait 를 사용하는데, 이 부분은 다음 시간에 배우기로 하고 많이 사용하는 것 중에 하나다 라고 기억해주면됩니다.

find_element()

이 기능은 페이지의 요소에 액세스하려는 경우에 중요합니다. 검색을 수행하기 위해 "Google 검색" 버튼에 액세스하려고 한다고 가정해 보겠습니다.

요소에 액세스하는 방법은 여러 가지가 있지만 내가 선호하는 방법은 요소의 XPath를 찾는 것입니다. XPath는 웹 페이지에서 요소의 최종 위치입니다.

F12를 클릭하면 페이지를 검사하고 현재 있는 페이지에 대한 배경 정보를 얻을 수 있습니다.

 
 

선택 도구를 클릭하면 요소를 선택할 수 있습니다.

검색창을 왼쪽 버튼으로 클릭하면 파란색으로 표시된 부분이 노출됩니다. 오른쪽으로 클릭하고 "Copy Xpath" 를 선택하면 검색창의 Xpath 가 복사됩니다. 

self.driver.find_element_by_xpath('/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div[2]/div[2]/input')

새 세션의 요소가 변경되고 다음에 스크립트를 수행할 때 작동하지 않으면 일반 XPath가 변경될 수 있기 때문에 일반 XPath보다 전체 XPath를 선호합니다.

다른 find_element 함수의 개요입니다. 

 

send_keys( ) 및 click( )

Send_keys( ) 와 click( ) 기능은 find_element 기능을 사용하여 선택한 필드에 텍스트를 입력 또는 클릭을 하는 데 사용됩니다.

Google에 "testing"를 입력하고 Google 로고를 클릭한다고 가정해 보겠습니다. 

google_tray = driver.find_element_by_xpath('/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div[2]/div[2]/input')
google_search = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/picture/img')

google_tray.send_keys("testing")
google_search.click()

요소를 각각의 변수에 저장한 다음 더 명확하게 하기 위해 요소에 대해 기능을 수행했습니다.

결국 다음과 같이 끝납니다.

 

 

반응형

+ Recent posts