Как увеличить элемент при очистке интерактивной карты? - PullRequest
0 голосов
/ 30 апреля 2019

Код, приведенный ниже, предназначен для сканирования всей Испании, собирая информацию из синих щелкающих точек (которые становятся видны только в темной части зума).Поэтому, если вы запустите приведенный ниже код, он попытается щелкнуть по кластеру синих точек, но потерпит неудачу, потому что все они расположены друг над другом и слишком близко друг к другу.

Поэтому мне было интересно, что можно увеличить группу синих точек, чтобы они все отделились друг от друга, нажать на все точки, снова уменьшить масштаб и продолжить сканирование.

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--incognito")
chrome_options.add_argument("--start-maximized")
driver = webdriver.Chrome(options=chrome_options)

codes = []
driver.get('https://geoportal.minetur.gob.es/VCTEL/vcne.do')

for x in range(2):
    driver.find_element_by_xpath('//* [@id="OpenLayers.Control.PanZoomBar_59_zoomin"]').click()

for x in range(4):
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="OpenLayers.Control.PanZoomBar_59_panup"]').click()

for x in range(3):
     time.sleep(1)
     driver.find_element_by_xpath('//*[@id="OpenLayers.Control.PanZoomBar_59_panright"]').click()

for x in range(2):
    driver.find_element_by_xpath('//*[@id="OpenLayers.Control.PanZoomBar_59_zoomin"]').click()

for x in range(2):
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="OpenLayers.Control.PanZoomBar_59_pandown"]').click()

for x in range(9):
     driver.find_element_by_xpath('//*[@id="OpenLayers.Control.PanZoomBar_59_zoomin"]').click()

for x in range(60000):
    for x in range(273000):
        time.sleep(2)
        towers = driver.find_elements_by_css_selector("div#map image[id*='OpenLayers.Geometry']")
        for tower in towers:
            tower.click()
            codes.append(driver.find_element_by_xpath('//*[@id="divDatosFeatureInfo"]/table/tbody/tr[3]/td/div/p').text)
        for x in range(14):
            time.sleep(1)
            driver.find_element_by_xpath('//*[@id="OpenLayers.Control.PanZoomBar_59_panright"]').click()

1 Ответ

0 голосов
/ 30 апреля 2019

Вы можете использовать Javascript для нажатия на синие точки, таким образом, точки будут щелкать, хотя они перекрываются.Вот пример.

#replace "tower.click()" with below line
driver.execute_script("arguments[0].click();",tower);

Возможно, мне придется покопаться, чтобы найти способ увеличить и прокрутить всю карту Испании.

...