我一直在尝试设置phantomjs来创建一个web scraper,但我无法让驱动程序工作。我添加了lein依赖项,如下所示:
[org.seleniumhq.selenium/selenium-server "2.47.1"]
[com.codeborne/phantomjsdriver "1.2.1"
:exclusions [org.seleniumhq.selenium/selenium-java
org.seleniumhq.selenium/selenium-server
org.seleniumhq.selenium/selenium-remote-driver]]
然后在我的剧本中:
(ns vendors-api.routes.scrapers.resource
(:require [clj-webdriver.core :refer [new-webdriver]])
(:import
(org.openqa.selenium.phantomjs PhantomJSDriver)
(org.openqa.selenium.remote DesiredCapabilities)))
(def driver
(new-webdriver
{:browser (PhantomJSDriver. (DesiredCapabilities. ))}))
我一直收到以下错误:
CompilerException java.lang.reflect.InvocationTargetException, compiling
我错过了什么?
答案 0 :(得分:1)
我希望您的依赖项不正确/不完整。
以下依赖列表对我有用:
[clj-webdriver "0.7.2"]
[org.seleniumhq.selenium/selenium-java "2.51.0"]
[com.codeborne/phantomjsdriver "1.2.1" :exclusions [org.seleniumhq.selenium/selenium-java]]
然后
(require ' [clj-webdriver.core :as driver])
(def my-driver (driver/new-driver {:browser :phantomjs}))
答案 1 :(得分:0)
问题中陈述的依赖关系是正确的。
使脚本在脚本中起作用的最终设置如下:
(:require [clj-webdriver.taxi :as taxi])
(System/setProperty "phantomjs.binary.path" "/path/to/binary")
(taxi/with-driver {:browser :phantomjs} (forms-to-evaluate)...)
希望这有助于其他人