본문 바로가기
자동화(Automation)

appium 자동화 Setting 2(Window환경)

by Testengineer 2024. 4. 28.
반응형

이번에는 윈도우환경에서 갤럭시탭 기기를 연결해서 크롬브라우저를 열어 테스트를 하는 방법에 대해 포스팅해보고자 합니다.

우선 저의 목표는 브라우저를 열어서 테스트하는 방법이지만, Appium inspector을이용해서 app을 선택해서 테스트하는 자동화도 가능합니다.

예시는, 아래와 같습니다.

먼저 테스트기기가 노트북과 연결된 상태에서 Appium 서버는 구동되어 있어야 합니다.

그리고 아래와 같은 코드를 입력하고, 테스트문을 실행하면 맨 하단과 같이 기기에서 실행이 됩니다. 

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

import java.net.MalformedURLException;
import java.net.URL;


public class App {
    protected AppiumDriver driver;

    @BeforeTest
    public void setUp() throws MalformedURLException {
    	 DesiredCapabilities capabilities = new DesiredCapabilities();
	     capabilities.setCapability("platformName", "Android");
	     capabilities.setCapability("automationName", "UiAutomator2");
	     capabilities.setCapability("deviceName", "연결된 기기명");
     driver = new AndroidDriver(new URL("http://localhost:4723/wd/hub"), capabilities);
    	}
    
     @AfterTest
    public void tearDown() {
        if (driver != null) {
            driver.quit();
        }
    }

위에서 devicename에서는 앞선 소개했던 바와 같이 cmd창에서 adb devices 문을 입력했을때 연결되 기기 아이디를 확인하고 본인기기에 맞는 것을 넣어주면 됩니다.

import static org.testng.Assert.assertTrue;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.testng.annotations.Test;

public class AppTest extends App{

	@Test(priority=0)
    public void test1() {	
		driver.findElement(By.xpath("//android.widget.TextView[@content-desc=\"Google, 폴더\"]")).click();
		driver.findElement(By.xpath("//android.widget.TextView[@content-desc=\"Chrome\"]")).click();
		}
        
 }

테스트문에는 구글 폴더에서 크롬을 클릭해서 브라우저를 여는것까지만 넣어봤습니다.

xpath는 appium Inspector를 이용해서 원하는 것을 확인해서 넣어주었습니다.

 

 

 

 

그리고 이제는 본격적으로 목표에 해당하는 실제 기기를 연결해서 브라우저를 구동해서 테스트하는 방법입니다.

먼저 테스트기기가 노트북과 연결된 상태에서 Appium 서버는 구동되어 있는 상태여야 합니다.

근데 중간에 하면서 처음에 Appium server GUI를 이용해서 appium 서버를 실행했었는데, 이상하게 크롬 드라이버에 관한 에러가 자꾸 떴습니다.

그래서 cmd창에서 appium을 실행하는 방향으로 틀어서 실행했습니다.

먼저 chromedriver설치부터 확실히 해주고, 이후로 버전이 맞지 않다는 에러가 뜬다면 아래와 같은 문으로 실행해주는 것도 해결방법이 될 수 있습니다.

npm install appium-chromedriver

 

appium  --base-path /wd/hub --allow-insecure chromedriver_autodownload

 

그리고 이클립스에서 코드는 아래와 같이 입력해서 실행해주었습니다.

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

import java.net.MalformedURLException;
import java.net.URL;



public class App {
    protected AppiumDriver driver;

    @BeforeTest
    public void setUp() throws MalformedURLException {
	   	 DesiredCapabilities capabilities = new DesiredCapabilities();
	     capabilities.setCapability("platformName", "Android");
	     capabilities.setCapability("automationName", "UiAutomator2");
	     capabilities.setCapability("platformVersion", "12.0");
	     capabilities.setCapability("deviceName", "연결된 기기명");
	     capabilities.setCapability("browserName", "Chrome");
     driver = new AndroidDriver(new URL("http://localhost:4723/wd/hub"), capabilities);
    	
    }
    

    
    @AfterTest
    public void tearDown() {
        if (driver != null) {
            driver.quit();
        }
    }

 

public class AppTest extends App{

    public void test2() {
            driver.get("https://m.naver.com/");
            System.out.println(driver.getTitle());
            assertTrue(true);
        }
        
    }

테스트 문에는  정말 간단하게 원하는 웹사이트 url로 이동해서 Title만 가져오는 테스트 문을 넣어놨습니다.

이 상태에서 실행하게 된다면, 아래와 같이 갤럭시탭에서 실행되게 됩니다.

 

참고한 사이트 : https://testautomationu.applitools.com/appium-java-tutorial-1/chapter6.1.html

반응형

'자동화(Automation)' 카테고리의 다른 글

Selenium_Button  (0) 2024.07.12
Selenium_가상키보드 우회방법  (0) 2024.06.22
appium 자동화 Setting 1(Window 환경)  (1) 2024.03.31
Selenium_HttpUrlConnection  (0) 2022.09.16
Selenium_Window tab  (0) 2022.09.10

댓글