Выбор значения с помощью регулярных выражений в выпадающей кнопке с Selenium - PullRequest
0 голосов
/ 14 марта 2020

У меня возникли проблемы с выбором значений, которые относятся к выпадающим кнопкам. Я никогда не видел кнопки, которая работает таким образом, она равна выпадающему меню, но она классифицируется на веб-сайте HTML как кнопка. Итак, селен возвращает мне ошибку при попытке манипулировать кнопкой, как если бы это было меню.

Не могли бы вы помочь мне узнать, какой код я должен запустить, чтобы выбрать значение из первого выпадающего меню этого Веб-сайт Центрального банка Бразилии ? Значение по умолчанию REAL (BRL), и я хочу использовать регулярные выражения для выбора других.

edit:

df = pd.DataFrame();

selector = Select(driver.find_element_by_id("button-converter-de")) 
options = selector.options
for index in range(0, len(options)-1):
    df.append(pd.DataFrame.from_dict(eval(options[index])), ignore_index= True)

selector.select_by_index(df.loc[df.iloc[:,0].str.contains(str(moeda_origem))])

Ошибка: «UnexpectedTagNameException: Select работает только для выбранных элементов, не на кнопке "

1 Ответ

1 голос
/ 14 марта 2020

Эта страница не использует выбор по умолчанию. Его выпадающий список является пользовательским, и, чтобы работать с ним, не используйте Selenium select и параметры, они не будут работать.

Попробуйте вместо этого:

driver = webdriver.Chrome()
driver.implicitly_wait(5)

driver.get('https://www.bcb.gov.br/conversao')

# Click to open the dropdown
driver.find_element_by_id("button-converter-de").click()
sleep(2) # Make sure dropdown opened

# Search for dropdown options by their selector
options = driver.find_elements_by_css_selector('#moedaBRL > li > a.dropdown-item')
print([o.text for o in options]) # this just prints all options, you can use your loop

Надеюсь, это поможет, удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...