Какой самый быстрый способ решить следующую проблему? - PullRequest
0 голосов
/ 17 октября 2018

Я написал программу для очистки экрана, которая следит за часами (на сервере приложений) и в 7:00:00 делает черточку, чтобы сделать бронирование онлайн.Работает нормально.Тем не менее, я потратил время, пытаясь улучшить его производительность.Я использую селен, с хромовым драйвером.

Вот что я выучил.Я пробовал различные способы поиска (по link_text, by_xpath и т. Д.) И щелкнул по рассматриваемому элементу (показан ниже).Когда я нахожу элемент без щелчка, процесс поиска занимает около 0,02 секунды.Когда я нахожу его одним щелчком мыши (мне нужно выбрать элемент и перейти на следующую страницу), это занимает более секунды.Я получаю те же результаты независимо от того, какой вариант find_element_by я использую, и я получаю те же времена в автономном или обычном режиме.

Вот моя теория - найти элемент относительно просто в html, уже загруженном в мою машину.Тем не менее, когда я нажимаю на элемент, обработка переходит на сервер, который делает некоторые вещи, и я получаю новый iframe, который требует времени.Таким образом, я пришел к выводу, что, возможно, я не смогу вынести большую часть этого времени (буквально то же самое утверждение без опции щелчка занимает 2% времени), но я надеюсь, что у кого-то есть другая мысль.Я думал, может быть, я мог бы перейти ко второму ifame локально, но не могу найти способ сделать это.Я также рассмотрел что-то иное, чем селен, но так как я думаю, что проблема лежит на стороне сервера, не уверен, что оно того стоит.

Заранее спасибо за любые идеи.

Программадовольно большой, но вот соответствующий раздел:

Назад из NAP - ДЕЙСТВИТЕЛЬНО ЗАКРЫТЬ до 7:00 AM, выберите желаемую дату и перейдите на следующую страницу (действительно iframe) - с использованием подготовленного xpath

    try: 
        br.find_element_by_link_text(str(day_to_book)).click()
        #sleep(refresh_factor)
    except NoSuchElementException:
         self.queue.put("- (" + thread + ") Attempted date selection too early? " + str(datetime.datetime.now()\
                    + datetime.timedelta(seconds = second_difference))[-11:-4])

Вот HTML-код для элемента 'class = "#"> 31:'

"31 31"

...