Сегодня вечером я рыскал по сети, часа 3-4. Я пробовал каждое предложение, с которым сталкивался. Я даже проверил объект «возможности» в моем объекте драйвера Selenium, чтобы убедиться, что он действительно установлен там, и это действительно так:
#<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 — это «Ruby»):
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 и многим другим, если вы используете Java. На данный момент я бы хотел во всех отношениях использовать Java для этого проекта, но теперь у меня есть 30 000 строк кода, которые я полностью написал сам за последние 2 месяца. Потеря этой работы, по крайней мере сейчас, была бы разрушительной не только для меня лично, но и для моей работы.
Что дает? Мне действительно придется копаться и настраивать исходный код, чтобы получить то, что я хочу, или эта функция действительно уже реализована? Опять же, я видел все ответы с начала 2013 года, но они у меня не работают, и я понятия не имею, почему и как это легко исправить. У меня крайний срок, так что это начинает быть очень напряженным.
У кого-нибудь есть идеи для меня? Имейте в виду, что я использую Ruby, а не Java.
Селен-вебдрайвер 2.43. PhantomJS 1.9.7. GhostDriver 1.1.0.
Мне кажется невероятным, что нет возможности изменить ваш User-Agent.
Пожалуйста, дайте мне знать, если я могу предоставить любую другую информацию, которая может быть полезной.
Я заранее признателен, если вы будете так любезны поделиться несколькими идеями или некоторой информацией, чтобы указать мне правильное направление.
Capybara.current_session.driver.add_headers('User-Agent' => user_agent)
илиCapybara.current_session.driver.header('User-Agent', user_agent)
под капотом, в зависимости от того, что определено. - person moonfly   schedule 09.10.2014add_headers
. - person moonfly   schedule 09.10.2014