Уточняйте результаты поиска Selenium в Google по временным рамкам и дате

Я пытаюсь уточнить свои результаты после использования Selenium и Chrome с python для автоматизации поиска в Google и получения отсортированных ссылок. Я могу успешно получить начальные результаты поиска с помощью сценария и автоматически нажать кнопку «Инструменты».

Суть в том, что я не могу определить необходимые HTML-теги для доступа и выбрать / щелкнуть раскрывающийся список временных рамок, по умолчанию установлен «В любое время», а затем выбрать / щелкнуть раскрывающийся список «Релевантность» для сортировки по дате. Я пробовал Select, но использую неправильные теги для этого метода. Я использовал inspect element и Katalon Recorder, чтобы выяснить это, но получаю синтаксические ошибки, такие как «element not found». Любая помощь приветствуется.

driver.get('https://www.google.com/search')
search_field = driver.find_element_by_name("q")

search_field.send_keys("cheese")
search_field.submit()
#  Clicks the Tools button, activates sort dropdowns
driver.find_element_by_id("hdtb-tls").click()

# Need to sort results by last 24, week, month, etc.
driver.find_element_by_class_name('hdtb-mn-hd')
driver.find_element_by_link_text('Past month').click()

# Need to sort results date
driver.find_element_by_xpath('.//*[normalize-space(text()) and normalize- 
space(.) = "To"])[1]/following::div[5]')
driver.find_element_by_link_text('Sorted by date').click()
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
347
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам не хватает .click() для driver.find_element_by_class_name('hdtb-mn-hd')

driver = webdriver.Chrome()

driver.get('https://www.google.com/search')
search_field = driver.find_element_by_name("q")

search_field.send_keys("cheese")
search_field.submit()
#  Clicks the Tools button, activates sort dropdowns
driver.find_element_by_id("hdtb-tls").click()

# Need to sort results by last 24, week, month, etc.
driver.find_element_by_class_name('hdtb-mn-hd').click()
driver.find_element_by_link_text('Past month').click()

вот полный сценарий, который проработал все до конца:

from selenium import webdriver 
import time

driver = webdriver.Chrome()

driver.get('https://www.google.com/search')
search_field = driver.find_element_by_name("q")

search_field.send_keys("cheese")
search_field.submit()
#  Clicks the Tools button, activates sort dropdowns
time.sleep(1)
driver.find_element_by_id("hdtb-tls").click()

# Need to sort results by last 24, week, month, etc.
time.sleep(1)
driver.find_element_by_class_name('hdtb-mn-hd').click()
time.sleep(1)
driver.find_element_by_link_text('Past month').click()

# Need to sort results date
time.sleep(1)
driver.find_elements_by_xpath('//*[@id = "hdtbMenus"]/div/div[3]/div')[0].click()
time.sleep(1)
driver.find_elements_by_xpath('//*[@id = "sbd_1"]')[0].click()

Я пробовал .click (), но не понял, какие теги должны быть в остальных. Это решило проблему, спасибо.

rpw2311 19.12.2018 14:21

Да, метка была хитрой. вот почему я пошел прямо на xpath. рад, что получилось, обязательно приму ответ.

chitown88 19.12.2018 15:55

Другие вопросы по теме