因此,我正在使用 etaoin 在 Clojure 中执行一些 Webdriver 操作。有一段时间它工作得很好。然而,我的程序在第 7 行崩溃了:
(ns Socialauto.core) (需要 '[etaoin.api:as e]) (需要 '[etaoin.keys :as k])
(需要'[socialauto.scraper:作为刮刀])
(默认驱动程序(e/firefox))
当它去定义firefox驱动程序时
(def driver (e/firefox))
,它就爆炸了。它给了我这个错误:
#错误{ :cause throw+: {:response {:value {:error "未知错误", :message "进程因状态信号意外关闭", :stacktrace ""}}, :path "会话", :payload {:desiredCapability {:loggingPrefs {:浏览器“全部”}}},:方法:post,:类型:etaoin / http-error,:端口64044,:主机“127.0.0.1”,:状态500,:webdriver-url nil,:driver {:类型:firefox,:主机“127.0.0.1”,:端口64044,:url“http://127.0.0.1:64044”,:定位器“xpath”,:功能{:loggingPrefs {:浏览器“ALL”}}, :args ("geckodriver" "--port" 64044), :process {:proc #object[java.lang.ProcessImpl 0x321bf4b1 "Process[pid=9879, exitValue="未退出"]"], :exit nil, :在#object[java.lang.ProcessImpl$ProcessPipeOutputStream 0x598f6c93“java.lang.ProcessImpl$ProcessPipeOutputStream@598f6c93”],:out #object[java.lang.ProcessBuilder$NullInputStream 0x65630116“java.lang.ProcessBuilder$NullInputStream@65630116”] , :err #object[java.lang.ProcessBuilder$NullInputStream 0x65630116 "java.lang.ProcessBuilder$NullInputStream@65630116"], :prev nil, :cmd ["geckodriver" "--port" "64044"]}}}
这种情况是在一天早上我去运行程序时开始发生的。前一天还运行得很好。
我已经卸载并重新安装了 Geckodriver 和 Firefox。但这并没有解决问题。我原以为这是某种版本控制问题,并认为 Firefox 可能在我不知情的情况下进行了更新。
所以,对于其他遇到此问题的人来说,我找出了问题所在。
我必须改变
(默认驱动程序(e/firefox))
到
(def 驱动程序 (e/firefox {:path-driver "/opt/homebrew/bin/geckodriver" :路径浏览器“/opt/homebrew/bin/firefox”}))
我猜这个问题来自于
etaoin
没有找到浏览器或驱动程序,所以我得到了两者的路径。
对于遇到此问题的任何其他人:运行
where geckodriver
和 where firefox
并将它们的输出设置为键 :path-driver
和 :path-browser
的值。