サイトにアクセスする前にジオロケーションを設定したいと思います。どうやってやるの?capybaraとphantomjsでジオロケーションを指定/上書きする方法
Capybara.default_driver = :poltergeist
driver_name = "poltergeist_#{rand 1_000_000}"
Capybara.run_server = false
Capybara.current_driver = driver_name
Capybara.default_wait_time = 10
opts = {}
Capybara.register_driver driver_name do |app|
opts = { :js_errors => true, :phantomjs_options => ['--ignore-ssl-errors=yes', '--ssl-protocol=TLSv1'], :timeout => 90 }
Capybara::Poltergeist::Driver.new app, opts
end
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2'
Capybara.current_session.driver.headers = { 'User-Agent' => user_agent}
Capybara
browser = Capybara
# now my attempt to set geolocation, which is unsuccessful.
browser.page.execute_script "navigator.geolocation.getCurrentPosition = function(success, failure) { success({coords: {latitude: 25.455755, longitude: -80.511565}, timestamp: Date.now()}); }"
しかし、私は今、位置認識サイトに向かう場合、私は私の地理的位置に関連するデータを参照してくださいいけない次のよう
小さなスクリプトの例です。したがって、ジオロケーションのオーバーライドは失敗します。
ジオロケーションを設定する正しい方法は何ですか?
サイトでは、ユーザーのジオロケーションを取得するためにclientside JSの 'geolocation' APIを使用していますか? 'alert'または' console.log'を 'getCurrentPosition'関数に投げて、本当に呼び出されているかどうかを調べる方法があります。 私は1つは、サーバー側でIPアドレスの参照をgeolocationに使用する傾向があるため、このメソッドは機能しません。 –