Ошибка Selenium: Сообщение: Select работает только с элементами <select>, а не с <md-select>

avatar
user15896474
1 июля 2021 в 19:12
73
1
0

Я знаю, что должен найти элемент "выбрать", чтобы выбрать из раскрывающегося списка. Но здесь тренды Google не предоставляют элемент "выбрать", и я хочу выбрать любое значение из списка данных и времени, а также когда я попробуйте сделать это, я получил эту ошибку «Сообщение: выбор работает только с элементами, а не с».... Я нашел решение, но оно было написано модулем «запросы», и я хочу использовать селен

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

from selenium.webdriver.support.ui import Select
import time

driver = webdriver.Chrome(executable_path="C:\\Drivers\\chromedriver.exe")


driver.get("https://trends.google.com/trends")

key1 = driver.find_element_by_xpath('//*[@id="sidenav-menu-btn"]/div')
key1.click()
time.sleep(1)

key2 = driver.find_element_by_xpath('//*[@id="sidenav-list-group-trends"]/md-item[2]/md-item-content/a/i')
key2.click()
time.sleep(2)


x = driver.find_element_by_xpath('//*[@id="select_12"]')
x.click()

drp = Select(x)
drp.select_by_index(2)
Источник

Ответы (1)

avatar
JD2775
1 июля 2021 в 20:41
0

Просто возьмите их за id напрямую, вместо использования select

drp = driver.find_element_by_id("select_option_22") # equates to 'Past 5 years'
drp.click()

Это открыло последние 5 лет (используя этот уникальный id) при нажатии

drp = driver.find_element_by_id("select_option_20") # equates to 'Past 30 days'

Был бы пункт меню «Последние 30 дней» и т. д....

Или вы можете перейти к тексту напрямую...

drp = driver.find_element_by_xpath("//div[normalize-space(text())='Past 7 days']")
drp.click()

Обратите внимание на normalize-space, он используется для удаления пробелов, которые имеет это текстовое значение элемента. Без него не получится.

user15896474
2 июля 2021 в 10:28
0

Можете ли вы сказать мне, как я могу получить идентификатор для «Соединенных Штатов» в раскрывающемся списке стран в тренде Google ..... Так что я могу выбрать его

JD2775
2 июля 2021 в 14:41
0

Попробуйте этот xpath: //md-option[@id='select_option_4']