clj-webdriver 소개

5702 단어 Clojure
◆ 다음 기사는 오래되었습니다. 기사에서는 v0.6.0을 사용하고 있지만 v0.7.x 이후에는 Selenium-WebDriver를 별도 dependencies에 추가하지 않으면 움직이지 않습니다 ◆

clj-webdriver는 clj-webdriver의 프런트 엔드이며 Clojure 스트림 API를 사용하여 브라우저를 조작 할 수 있습니다.
Ruby를 사용하면 Selenium-WebDriver과 같을 수 있다고 생각할 수 있으므로 스크래핑하여 다양한 방법으로 사용할 수 있습니다.
$ lein new webdriver-test

project.clj에 clj-webdriver를 추가하십시오.

project.clj
(defproject webdriver-test "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
-  :dependencies [[org.clojure/clojure "1.5.1"]])
+  :dependencies [[org.clojure/clojure "1.5.1"]
+                 [clj-webdriver "0.6.0"]])
$ lein deps

clj-webdriver를 사용하면 taxi라는 하이 레벨 API를 사용하여 탐색 할 수 있습니다. 입니다.
(ns webdriver-test.core
  (:use [clj-webdriver.taxi]))

;; Qiitaトップページにアクセス
(set-driver! {:browser :firefox} "https://qiita.com")

이제 Firefox가 시작되어 Qiita의 톱 페이지를 엽니 다.

Mechanize

트위터를 통해 로그인하려면 hashmap에서 태그 및 속성 정보를 전달하고 find-element (후보를 모두 반환 할 때 find-elements)로 필터링하고 click합니다.
;; Twitter経由でQiitaにログイン
(click (find-element {:tag :a, :data-provider "Twitter"}))

양식 입력은 quick-fill-submit가 유용합니다. CSS 선택기에서 #idhoge를 쓰고 값을 넣고 마지막으로 제출합니다.
;; TwitterにログインしてQiitaのアクセスを許可
(quick-fill-submit {"#username_or_email" "T_Hash"}
                   {"#password" "weiwei"}
                   {"#allow" submit})

이제 Qiita에 로그인 할 수있었습니다. 내 스톡에서 clojure 태그가있는 게시물을 검색해보십시오.

vim-fireplace
;; 自分のストックを表示してclojureタグで検索
(click (find-element {:tag :a, :href "/stock"}))
(quick-fill-submit {"*[name=q]" "tag:clojure"
                    "button[type=submit]" submit})


;; スクリーンショットも取れます
(take-screenshot :file "./screenshot.png")

;; 結果articleをすべて抜き出して加工するところまで書きたかったけど時間足りなくなった
;; (find-elements {:tag :article})

(quit)

스크린 샷을 사용할 수 있으므로 (Selenium 자체의 기능이지만) 간단한 작업을 자동화하는 데에도 사용할 수 있습니다.

좋은 웹페이지 즐겨찾기