본문 바로가기

프로그래밍 언어 노트/Clojure

[Clojure] Clojure 웹 드라이버 API

 

(wait-visible {:fn/text "고객센터"})

github.com/igrishaev/etaoin

 

igrishaev/etaoin

Pure Clojure Webdriver protocol implementation. Contribute to igrishaev/etaoin development by creating an account on GitHub.

github.com

 

쉽게 말하면 셀레니움 같은거이다.

clojure 에서 쉽게 webdriver 를 사용할수있는 라이브러리

 

간단하게 사용법을 살펴보면

 

드라이버 설정

(def driver (chrome))	; chrome 사용

(def driver (chrome-headless)) ;headless

(def driver (chrome-headless {:path-driver ".//path"})) ;드라이버 경로지정

 

이동

(go driver "https://en.wikipedia.org/")	;이동
(wait-visible driver [{:id :simpleSearch} {:tag :input :name :search}]) ;해당 요소가 보일때까지 대기
(wait driver 3) ;시간 대기
(fill driver {:tag :input :name :search} "Clojure programming language") ;해당 요소에 값채우기
(fill driver {:tag :input :name :search} k/enter) ; 엔터

 

쿼리

{:tag :div :id :date}  ; div이면서 id 가 date
;<div id="date"/>

[{:tag :div} {:id :date} ]
;<div>
;	<아무태그 id="date"/>
;</div>

;index로 순서를 정할수있다, 1부터 시작하는듯
{:tag :div :id :date :index 2}  ; div이면서 id 가 date인 애들중 2번째

 

;has-class 심볼을 이용해서 여러 class를 가지고있는지 확인가능
{:tag :a, :fn/has-classes [:abc :def]}

내용으로 쿼리

그래 이게 없을리 없지 쿼리에 :fn/text 를 사용

(wait-visible {:fn/text "검색"})

 

쿼리 함수

query/ query-all 을 사용하면 유니크한 id를 밷는다 (xpath id?)

(query driver {:tag :button :fn/text "Press Me"})
(query-all driver {:css "li.search-result a"}

 

내용 가져오기

get-어쩌고 꼴의 함수를 사용한다.

get-어쩌고는 바로 검색조건을 넣어야하고 get-어쩌고-el 은 위의 쿼리로 가져온 데이터를 넣으면된다.

(get-element-inner-html driver {:tag :div}) ; 첫번째 div 의 html 코드
(get-element-attr-el driver data :href) ; data는 query 함수로 찾은 엘리먼트, data의 href값

 

728x90