我今晚已經在網絡上工作了大約3-4個小時。我已經嘗試了我遇到的每個建議。我甚至已經檢查了「能力」的對象我硒驅動程序對象上,以確保它實際上是設置在那裏,而事實上,它是:在Selenium Webdriver中爲使用Ruby的PhantomJS設置自定義用戶代理
#<Selenium::WebDriver::Remote::Capabilities:0x00000007475cf0
@capabilities=
{:browser_name=>"phantomjs",
:version=>"1.9.7",
:platform=>:"linux-unknown-64bit",
:javascript_enabled=>true,
:css_selectors_enabled=>true,
:takes_screenshot=>true,
:native_events=>true,
:rotatable=>false,
:firefox_profile=>nil,
:proxy=>#<Selenium::WebDriver::Proxy:0x00000007475908 @type=:direct>,
"driverName"=>"ghostdriver",
"driverVersion"=>"1.1.0",
"handlesAlerts"=>false,
"databaseEnabled"=>false,
"locationContextEnabled"=>false,
"applicationCacheEnabled"=>false,
"browserConnectionEnabled"=>false,
"webStorageEnabled"=>false,
"acceptSslCerts"=>false,
"proxy"=>{"proxyType"=>"direct"},
"phantomjs.page.settings.userAgent"=>
"Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:27.0) Gecko/20100101 Firefox/27.0"}>
除了「phantomjs.page.settings.userAgent」,我已經嘗試了「userAgent」等等。我在過去的3-4個小時內可以在網上找到的每一件事,我都試過了。顯然,在2013年初附近,這是一個相當普遍的問題,我說的解決方案顯然是常見的解決方案。這些都不是工作,而事實上,我知道這是肯定的,從該位的信息(注意User-Agent爲「紅寶石」):
UNCAUGHT EXCEPTION: {"errorMessage"=>"Element is not currently visible and may not be manipulated",
"request"=>
{"headers"=>
{"Accept"=>"application/json",
"Accept-Encoding"=>"gzip;q=1.0,deflate;q=0.6,identity;q=0.3",
"Connection"=>"close",
"Content-Length"=>"2",
"Content-Type"=>"application/x-www-form-urlencoded",
"Host"=>"localhost:9876",
"User-Agent"=>"Ruby"},
"httpVersion"=>"1.1",
"method"=>"POST",
"post"=>"{}",
"postRaw"=>"{}",
"url"=>"/click",
"urlParsed"=>
{"anchor"=>"",
"query"=>"",
"file"=>"click",
"directory"=>"/",
"path"=>"/click",
"relative"=>"/click",
"port"=>"",
"host"=>"",
"password"=>"",
"user"=>"",
"userInfo"=>"",
"authority"=>"",
"protocol"=>"",
"source"=>"/click",
"queryKey"=>{},
"chunks"=>["click"]},
"urlOriginal"=>
"/session/a03cc440-4f5c-11e4-8854-ed9c22bf60af/element/%3Awdc%3A1412822036214/click"}}
不幸的是,有更多的信息和討論這些Selenium問題以及其他許多問題,if you're using Java。在這一點上,我希望通過Java爲這個項目工作的每一種方式,但現在我擁有30,000行代碼,這些代碼在過去的2個月中完全由我自己編寫。至少現在放棄這項工作不僅會對我個人造成破壞性影響,而且會對我的工作造成災難性的影響。
什麼給?我是否真的需要深入挖掘和定製源代碼才能獲得我想要的功能,還是現在實現了真的?我再次看到了2013年初的所有答案,但它們不適用於我,我不知道爲什麼,或者如何輕鬆解決它。我正處於最後期限,所以這開始變得非常緊張。
有沒有人有我的想法?請記住,我使用的是Ruby,而不是Java。
Selenium-webdriver是2.43。 PhantomJS是1.9.7。 GhostDriver是1.1.0。
對我來說,這似乎令人難以置信,無法修改您的User-Agent。
請讓我知道,如果我可以提供任何其他可能的幫助信息。
如果您願意分享一些想法或信息,讓我指出正確的方向,
從來沒有試過自己,但檢查:https://github.com/mururu/capybara-user_agent。 根據定義的內容,它基本上是'Capybara.current_session.driver.add_headers('User-Agent'=> user_agent)'或'Capybara.current_session.driver.header('User-Agent',user_agent) 。 – moonfly 2014-10-09 04:33:33
呃,好像它不會工作,因爲http://stackoverflow.com/a/15647143/2117020。所以,我猜,最好的方法是從Selenium切換到Poltergeist(https://github.com/teampoltergeist/poltergeist)。它似乎支持'add_headers'。 – moonfly 2014-10-09 04:38:23
那真是太棒了!我認爲你需要使用水豚來使用Poltergeist,但是我會更多地查看代碼,並且看看我能夠掀起什麼。 謝謝。讓我知道你是否有更多的想法。 – 2014-10-09 19:35:55