#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, дайте мне знать, если я оставил какую-либо другую информацию, которую вам нужно скопировать