Спасибо большое за помощь! Я проверил работу кода. Добавил еще один элемент: фильтрацию по станции, т.к. загружались не те данные - обнаружения со всей карты.
#!/usr/bin/python3.8
from selenium import webdriver
from selenium.webdriver.support.select import Select
import time
Station = 'RU000Q'
date = "20211008_solrange_195.0-196.0"
driver = webdriver.Chrome()
page = driver.get('https://tammojan.github.io/meteormap/')
element_station_search = driver.find_element_by_xpath('//*[@id="stationSearch"]')
element_station_filter = driver.find_element_by_xpath('//*[@id="stationsFilter"]')
element_download_csv = driver.find_element_by_xpath('/html/body/div[4]/button[2]')
element_download_kml = driver.find_element_by_xpath('/html/body/div[4]/button[3]')
element_count_meteors = driver.find_element_by_xpath('//*[@id="rowcount"]')
element_station_search.send_keys(Station)
element_station_filter.send_keys(Station)
select = Select(driver.find_element_by_xpath('//*[@id="datasetDropdown"]'))
time.sleep(5)
select.select_by_visible_text(date)
time.sleep(10)
if element_count_meteors.text == '0':
driver.close()
driver.save_screenshot('selenium_screen.png')
element_download_csv.click()
time.sleep(5)
element_download_kml.click()
time.sleep(30)
driver.close()
До этого я написал свой код, который работает через раз:
#!/usr/bin/python3.8
#WARNING! INSTALL selenium-DRIVER TO YOUR BROWSER!!!
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
import sys
#ПРИМЕРНО В 17:00 ВСЕ ПЕРЕСТАЛО РАБОТАТЬ ПРОБЛЕМЫ С ПИТОНОМ ИЛИ БРАУЗЕРОМ
#============================================================
#Adjustment script
#ID stantion:
Station = "RU000Q"
#Init web-browser
driver = webdriver.Chrome()
driver.set_window_size(1600, 2048)
#driver.maximize_window()
#etc
Zoom = 7
Date = sys.argv[1]
#Folder for screenshot
fold = "/home/vas/RMS_Processing/" + Station + "_" + Date + "screenie.png"
#============================================================
#Goto link
driver.get('https://tammojan.github.io/meteormap/');
#Waiting
time.sleep(5)
#Select date
driver.find_element_by_xpath("//*[@id='datasetDropdown']/option[contains(text(),'%s')]" %Date).click()
#Find my stantion
driver.find_element(By.XPATH, '//*[@id="stationSearch"]').send_keys(Station)
#Filter my stantion
driver.find_element(By.XPATH, '//*[@id="stationsFilter"]').send_keys(Station)
#Waiting
time.sleep(3)
#Select ZOOM
n=1
while(n<=8-Zoom):
driver.find_element(By.XPATH, '//*[@id="mapid"]/div[2]/div[1]/div[1]/a[2]').click()
time.sleep(3)
n = n + 1
#Waiting
time.sleep(15)
if driver.find_element_by_xpath('//*[@id="rowcount"]').text == '0':
driver.close()
#Screenshot
driver.find_element_by_tag_name('body').screenshot(fold)
#Download *.csv and *.klm - files
driver.find_element(By.XPATH, '//button[text()="Download selection as CSV"]').click()
driver.find_element(By.XPATH, '//button[text()="Download selection as KML"]').click()
#Waiting
time.sleep(5)
#Close browser
driver.quit()
Его проблема - выдает данные неправильной даты. К примеру, я ввожу 8-е октября, а он отображает за 14-е.
Тестируя ваш код и свой, я пришел к выводу что проблема в конструкции:
#Select date
driver.find_element_by_xpath("//*[@id='datasetDropdown']/option[contains(text(),'%s')]" %Date).click()
Это решение я использовал, т.к. селениум находит по выделенному тексту ВСЮ область, а не ее часть. А именно:
Мне нужно, чтобы поиск производился по дате:
А не по содержимому в списке:
date = "20211008_solrange_195.0-196.0"
Т.к. я не знаю каким образом считать числа в “_solrange_195.0-196.0”. Логичнее осуществить поиск по элементу.
Отсюда главный вопрос: может ли селениум осуществлять поиск по части видимого текста?