Elixir & Hound 无头浏览器



当你需要一个无头浏览器时,Hound非常适合测试web应用程序等。我得到了它的工作,玩了测试等,但有2个问题关于猎犬,也许有人可以解释谁是熟悉Elixir:)

1)。我使用的是PhantomJS的远程WebDriver模式(phantoms -w在本地主机上)。我在config中设置了"config:hound, driver:"phantomjs"。因此,一个简单的"navigate_to @url"启动一个PhantomJS实例并正常工作。现在我想更改此请求的HTTP用户代理字符串。PhantomJS提供了这个页面。设置散列。在远程WebDriver模式下对本地PhantomJS运行上述请求显示了以下设置:

[INFO  - 2014-08-24T21:54:00.232Z] Session [27b92460-2bd9-11e4-a77f-1daa5df28587] - 
page.settings - {"XSSAuditingEnabled":false,"javascriptCanCloseWindows":true,"javascriptCanOpenWindows":true,"javascriptEnabled":true,
"loadImages":true,"localToRemoteUrlAccessEnabled":false,
"userAgent":"Mozilla/5.0 (Macintosh; PPC Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.7 Safari/534.34","webSecurityEnabled":true}
[INFO  - 2014-08-24T21:54:00.232Z] Session [27b92460-2bd9-11e4-a77f-1daa5df28587] - page.customHeaders:  - {}
[INFO  - 2014-08-24T21:54:00.232Z] Session [27b92460-2bd9-11e4-a77f-1daa5df28587] - Session.negotiatedCapabilities -
{"browserName":"phantomjs","version":"1.9.7","driverName":"ghostdriver","driverVersion":"1.1.0",
"platform":"mac-unknown-64bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databaseEnabled":false,
"locationContextEnabled":false,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,
"webStorageEnabled":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":{"proxyType":"direct”}}

问题是:如何改变上面的userAgent ?我没有找到任何与之相关的例子。我知道它看起来像运行一个PhantomJS实例直接作为CLI工具与适当的JS配置,但不确定,猎犬如何管理。

2)。我还需要使用HTTP代理进行身份验证。和第1节一样。我知道如何处理从命令行启动PhantomJS,但是什么是正确的地方来定义它们运行在猎犬之上?

您应该将map作为additional_capabilities参数传递给任何启动会话的函数。

Hound.start_session(%{userAgent: "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36"})

对于代理选项,值应该是另一个具有属性的映射。

Hound.start_session(%{proxy: %{property: "parameter", property: "parameter"}})

我从来没有使用过代理,所以我不确定如何正确配置它。

我花了相当多的时间试图让它工作。来自cevado的答案不适合我,但我可以通过设置以下内容来设置用户代理。

Hound.start_session(%{"phantomjs.page.settings.userAgent" => "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36"})

另外:

  • 根据当前版本的文档->{:hound, "~> 1.0"},原子::user_agent必须使用:

    Hound.start_session(%{user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"})
    

config/config.exs(硒)配置:

config :hound, driver: "chrome_driver", browser: "chrome_headless"

用于测试的示例模块:

defmodule Example.Test do
  use Hound.Helpers
  def get_github_home() do
    Hound.start_session(%{user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"})
    navigate_to("https://www.github.com/")
    
    IO.inspect(page_source())
    
    Hound.end_session()
  end
end
使用(iex):

Example.Test.get_github_home()

相关内容

  • 没有找到相关文章

最新更新