Выбор элемента во всплывающем окне не повторяет то, что происходит, когда я нажимаю на него вручную

#python #selenium

Вопрос:

Я пытаюсь выбрать элемент (или различные элементы) во всплывающем окне здесь:

https://www.just-eat.co.uk/restaurants-pretamanger-tothillstreetlondon/menu

Если вы прокрутите вниз и выберете «Плоский белый» в качестве примера, а затем нажмете «Coconut Flat White», вы заметите, что кнопка «Добавить на заказ» загорается оранжевым, становясь доступной для просмотра. Однако, когда я использую selenium для нажатия опции «Coconut Flat White», она выбирается, но кнопка «Добавить в заказ» не загорается и не становится доступной для просмотра.

У меня были серьезные проблемы с поиском элементов в этих всплывающих окнах (например, Coconut Flat White), я безуспешно перепробовал все приведенные ниже:

 browser.find_element_by_xpath(f'//span[text()="{element1}"]').click()
 
 action = ActionChains(browser)
action.move_to_element(element1)
action.move_to_element(WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.XPATH, f'//span[text()="{element1}"]')))).click().perform()
 
 WebDriverWait(browser, 10).until(EC.visibility_of_element_located((By.XPATH, f'//span[text()="{element1}"]')))
browser.execute_script("arguments[0].scrollIntoView();", WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, f'//span[text()="{element1}"]'))))
 

Переменная element1 является динамической и вводится пользователем в данный момент через element1 = input("Enter an add on")

Затем я попытался перебрать попытки нажатия и, если возникла ошибка, прокрутите всплывающее окно вниз на 1. Пока что это дало мне наибольший успех, но это подводит меня к последней проблеме: элемент выбирается нормально, но кнопка «Добавить в заказ» не загорается

                     popup = browser.find_element_by_css_selector('.c-megaModal-document--scrollable')
                    x = False
                    while x == False:
                        try:
                            #browser.find_element_by_xpath(f'//span[text()="{element1}"]').click() #This doesn't even find the element so I had to change to contains
                            element = browser.find_element_by_xpath(f'//span[contains(text(), "{element1}")]')
                            popup.send_keys(Keys.ARROW_DOWN)
                            popup.send_keys(Keys.ARROW_DOWN)
                            element.click()
                            x = True
                            break
                        except:
                            popup.send_keys(Keys.ARROW_DOWN)
                            time.sleep(0.5)
 

Я был бы признателен, если кто-нибудь сможет взломать это всплывающее окно и посмотреть, добьются ли они успеха. Обратите внимание, что он должен быть динамическим, поэтому я использую Xpath, поскольку дополнительный элемент не всегда будет «Coconut Flat White» (всплывающее окно также не всегда будет «плоским белым»).).

Я использую FireFox webdriver, дайте мне знать, если я оставил какую-либо другую информацию, которую вам нужно скопировать