Как установить макет Geolocation Long / Lat в Python / Chromedriver / Selenium - PullRequest
1 голос
/ 23 октября 2019

Я использую Python / Chromedriver / GoogleChrome / Selenium без заголовка на Python, и у меня возникли некоторые проблемы с выяснением, как программно установить собственную геолокацию long / lat;следующий код не обновляет местоположение на google.com или https://www.infobyip.com/browsergeolocation.php

В данный момент я запускаю chromedriver со следующими параметрами:

chrome_options.add_experimental_option("prefs", { 
    "profile.default_content_setting_values.media_stream_mic": 1, 
    "profile.default_content_setting_values.media_stream_camera": 1,
    "profile.default_content_setting_values.geolocation": 1, 
    "profile.default_content_setting_values.notifications": 1,
    "profile.default_content_settings.geolocation": 1,
    "profile.default_content_settings.popups": 0
  })

Я могу позвонить и установить / получитьgeolocation long / lat с этими командами:

    driver.execute_script("""navigator.geolocation.getCurrentPosition = function(success, failure) { 
      success({ 
        coords: {latitude: -43.5333, longitude: 172.633}, 
        timestamp: Date.now(), 
      }); 
    }"""); 
    time.sleep(5) 
    print(driver.execute_script("var positionStr=\"\";"+ 
                                "window.navigator.geolocation.getCurrentPosition(function(pos){positionStr=pos.coords.latitude+\":\"+pos.coords.longitude});"+
                                "return positionStr;"))

Это возвращает обновленный long / lat, который я установил. НО при использовании https://www.infobyip.com/browsergeolocation.php или http://google.com, он не захватывает новую геолокацию и не работает.

Как установить пользовательскую геолокацию с помощью аргументов конфигурации chromedriver, программные средства chrome devили путем изменения файлов в каталоге профиля моего chrome? Другие ответы для pythons selenium при переполнении стека, похоже, здесь не работают.

1 Ответ

0 голосов
/ 05 ноября 2019

Linux Distribution

Firefox Webdriver Selenium Версия: 3.14.1

GeckoDriver: https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz

  • Используйте профиль по умолчанию и измените его настройки
  • Использование профиля с веб-драйвером итеративно

Профиль по умолчанию, например: /home/-user-/.mozilla/firefox/wg8ugmge.default

Путь к исполняемому файлу, например: / home/ -user- / Downloads / geckodriver

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

profile = webdriver.FirefoxProfile('<path_to_default_profile>') 
profile.set_preference("geo.prompt.testing", True) 
profile.set_preference("geo.prompt.testing.allow", True)
profile.set_preference("geo.wifi.scan", True)
executable_path='<executable-path-geckodriver>'
profile.set_preference("geo.wifi.uri", 'data:application/json,{"location":{"lat":22.893,"lng":72.4095},"accuracy": 100.0}')

driver = webdriver.Firefox(executable_path = executable_path , firefox_profile=profile)
driver.get('https://maps.mapmyindia.com')

Надеюсь, это решит вашу проблему!

...