반응형

jmeter 의 webdriver 를 사용하여 selenium 을 사용하다보면

 

iframe 을 포함하고 있는 페이지의 동작이 필요한 경우가 발생하게 됩니다.

 

하지만 selenium 에서 iframe 에 있는 아이디나 tag, xpath, linkText 등등 여러가지를 사용해서

 

iframe 내에 있는 동작을 처리하려고 할 때 정상적으로 되지 않는 경우가 발생합니다.

 

 

<html lang="ko"><script src="chrome-extension://ljdobmomdgdljniojadhoplhkpialdid/page/prompt.js"></script><script src="chrome-extension://ljdobmomdgdljniojadhoplhkpialdid/page/runScript.js"></script><head>
	<link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon">
	<link rel="icon" href="/images/favicon.ico" type="image/x-icon">

	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=Edge">	
	
	<script type="text/javascript" src="/js/jquery/jquery-3.5.1.min.js"></script>
	<script type="text/javascript" src="/js/jquery/jquery.serializeObject.min.js"></script>	

	<title>Test</title>
    
    ....
	<body>
    ....
    <iframe id="iframe-1">
    #document
    <!DOCTYPE html>
    	<html>
        <head>
        <body>
        ....
        	....
            ....
            <div id="iframe_div">
            	....
                ....

 

위의 예시는 기본 html 내 iframe 이 속해있는 구조입니다.

 

이런 구조에서 iframe 내에 있는 iframe_div 를 조작하려고 하면 커서가 iframe 쪽으로 이동하지 않았기 때문에

 

로그도 남지 않고 아무런 반응이 일어나지 않는 경우가 있습니다.

 

그럼 ifrmae 쪽으로 커서를 이동해주어야 iframe 내에 있는

 

컴포넌트들이 동작을 할텐데 어떻게 해야하는지 알아보겠습니다.

 

 

var iframe = WDS.browser.findElement(org.openqa.selenium.By.xpath("//iframe[@name='iframe-1']"))
WDS.browser.switchTo().frame(iframe)

wait.until(ui.ExpectedConditions.visibilityOfElementLocated(org.openqa.selenium.By.id('iframe_div')))
WDS.browser.findElement(org.openqa.selenium.By.xpath("//div[@id='iframe_div']/div[4]/div/div/div/div[2]/span")).click();
WDS.browser.findElement(org.openqa.selenium.By.xpath("//div[@id='iframe_div']/div[27]/div/img")).click();

 

방법은 위와 같이 아주 간단합니다.

 

iframe 을 식별할 수 있는 iframe-1 을 선택할 수 있게 switchTo function 을 사용하면 간단하게 커서 이동이 됩니다.

 

그 후에는 iframe 내에 있는 객체들을 마음껏 사용할 수 있습니다

 

간단하게 사용할 수 있으니 테스트한번 해보시기 바랍니다.

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

jMeter plugin webDriver 설치 및 사용방법

 

 

성능 테스트를 하기 위해 jMeter 를 설치하고 http request sampler 를 이용하여

 

테스트를 하고 있었는데 dynamic script 를 호출하여 CGI 프로그램을 실행해야하는 부분이 존재하였다.

 

웹페이지 안에 dynamic script 가 정상적으로 호출되지 않아

 

CGI 프로그램의 response 를 정상적으로 받지 못하는 상황이 발생.

 

어떻게 해야 정상적으로 프로그램을 짤 수 있을까 찾아보던 도중

 

jMeter plugin 중 webDriver 라는것이 존재한다는 사실을 확인하였다.

 

webDriver 를 사용하게 되면 기존에 http request Sampler 를 사용했던 것과는 달리

 

sampler 를 추가 했을 때 빈화면이 나와서 당황스러울수도 있다.

 

직접 소스코딩을 하라는 얘기인데 강력한 기능에는 강력한 권한이 부여되니 너무 걱정하지 않아도 된다.

 

사용해보고 어떻게 사용하는지 설치 및 사용방법에 대해 간단하게 정리해놓기로 한다.

 

jMeter 는 정상적으로 설치되었다는 가정하에 시작.

 

 

1. Options 메뉴의 Plugins Manager 선택

 

 

2. webdriver 라고 검색하면 selenium/WebDriver Support 항목을 체크 후  Apply Changes and Restart JMeter 버튼을 클릭한다.

 

 

플러그인이 정상적으로 설치되며, jmeter 가 재시작되게 된다.

 

 

3. Chrome Driver Config 및 WebDriver Sampler

 

이제 Thread Group 내 Chrome Driver Config 와 WebDriver Sampler 를 사용할 수 있게 되었다.

 

 

Chrome Driver Config

 

 

 

WebDriver Sampler

 

4. ChromeWebDriver 를 다운로드 받는다.

 

chromedriver.chromium.org/downloads

 

위 경로에 들어가서 받을 수 있다.

 

chrome web driver

 

현재 자신이 사용하고 있는 chrome browser 의 버전과 동일한 web driver 를 다운받아야 정상적으로 테스트를 할 수 있다. ( 그렇지 않으면 스크립트 오류가 발생하는 것을 확인함 )

 

 

 

 

다운 받은 chromedriver 의 exe 파일은 Chrome Driver Config 쪽에 등록해주면 기본적인 세팅은 끝

 

Chrome Driver Config 에서는 Use Chrome headless mode 를 사용할 수 있다.

 

headless mode 는 jMeter 를 run 시키면 크롬 브라우저가 실행되면서

 

내가 직접 작성한 내용이 브라우저에서 그대로 실행되는데

 

headless mode 를 체크 후 실행하면 back ground 에서 실행되게되니 부하기의 리소스를 덜 먹게 된다.

 

5. webDriver Sampler 소스를 입력

 

 

var pkg = JavaImporter(org.openqa.selenium);
var ui=JavaImporter(org.openqa.selenium.support.ui) 
var support_ui = JavaImporter(org.openqa.selenium.support.ui.WebDriverWait);

WDS.sampleResult.sampleStart()
WDS.browser.get("http://localhost:8080/index.aspx/?Param=aaa");

var wait = new support_ui.WebDriverWait(WDS.browser, 500);
wait.until(ui.ExpectedConditions.visibilityOfElementLocated(pkg.By.id('login_id')))    
WDS.browser.findElement(pkg.By.xpath("//div[@id='login_btn']/div[3]/div/img")).click();

wait.until(ui.ExpectedConditions.visibilityOfElementLocated(pkg.By.className('ui-menu')))
WDS.browser.findElement(pkg.By.linkText("new report")).click();
wait.until(ui.ExpectedConditions.visibilityOfElementLocated(pkg.By.name('menu-01')));
WDS.browser.findElement(pkg.By.id("FDOI5LBN053KNK39")).click();

var action = new org.openqa.selenium.interactions.Actions(WDS.browser)
action.moveToElement(WDS.browser.findElement(pkg.By.id("FDOI5LBN053KNK39"))).doubleClick().build().perform()
WDS.browser.findElement(pkg.By.id("execute")).click();


WDS.sampleResult.sampleEnd()

 

로컬에 설치해놓은 서버에 접근해서 화면을 조회하는 화면이다.

 

기본적인 개념은 webDriver 를 사용하면 브라우저가 해당 object 를 rendering 하는 시간이 소요되게 되는데

 

rendering 전에 object 를 찾으려고 하면 찾을 수 없으니 object 가 화면에 그려진 후 다음 작업을 진행되도록 처리하였다.

 

object 를 찾는 것은 xpath, id, name, class, linkText 를 이용하여 객체를 찾을 수 있다.

 

좀 더 스크립트를 쉽게 개발하기 위해서는

 

chrome 의 확장프로그램을 이용하여 recording 을 할 수 있는 Katalon Recorder 가 있지만

 

recorder 를 100% 믿을 수는 없는 것이 no such element: Unable to locate element 오류를 만날 수 있기 때문이다.

 

해결 방법은 위에 적어놓음.

 

다음에 다시 load test 를 하는 날에 다시 읽어볼 날이 오겠지~~

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

teradata sql assistant lob information 팝업 안나오게 처리

 

 

teradata를 사용하다보면 가끔 팝업에서 LOB INFORMATION 이라는 팝업이 뜰 때가 있다.

 

 

이 팝업이 뜨면 해당 컬럼을 파일로 저장하게 되어 search 된 조회건수 만큼 파일수가 생성되게 되며

 

 

생성된 파일을 지우지 않고 방치했다가는 해당 폴더가 쓰레기 더미로 쌓이게 되는일이 생기게 된다.

 

 

옵션에서 수정하는 방법

tool > options > Answerset > Handle Binary/Byte columns as BloBs if size

tool > options > Answerset > Handle Varchar columns as CLOBs if size

 

 

결과값이 정해둔 값보다 크면 blob 이나 clob 으로 변경하는 옵션인데

 

 

해당 옵션의 수치를 원하는 수치로 변경하면 lob information 팝업이 뜨지 않도록 설정할 수 있다.

 

 

옵션도 건드리기 싫고 그냥 단순히 조회만 빠르게 해버리고 싶다면

 

 

이 팝업이 활성화 될 때 CAST 함수를 사용하여 VARCHAR 로 변경한다면 정상적으로 조회가 된다.

 

 

CAST ( column1 AS VARCHAR(2000) )

 

 

이런 방식으로 변경하여 사용하면 핻아 팝업의 내용을 보지 않을 수 있다.

 

 

더 궁금한것이 있으면 댓글로 달아서 같이 공유해요~

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형