Элемент находится внутри нескольких вложенных shadow-root
секций. Вам нужно переключаться на каждый раздел по одному, например <ifram>
s, однако Selenium не имеет встроенной поддержки shadow-root
.
. В качестве обходного пути можно получить раздел shadow-root
в качестве WebElement. используя JavaScript и используйте этот элемент для нахождения элементов внутри раздела
driver.get("https://www.wego.co.in/")
element = driver.find_element_by_id('app')
shadow_root = self.get_shadow_root(driver, element)
element = shadow_root.find_element_by_css_selector('[id="base"] > wego-search-form')
shadow_root = self.get_shadow_root(driver, element)
element = shadow_root.find_element_by_class_name('flightSearchForm')
search_bar_shadow_root = self.get_shadow_root(driver, element)
element = search_bar_shadow_root.find_element_by_id('dep')
shadow_root = self.get_shadow_root(driver, element)
fly_from = shadow_root.find_element_by_css_selector('[placeholder="From"]')
fly_from.click()
fly_from.send_keys("New Delhi, India")
element = search_bar_shadow_root.find_element_by_id('arr')
shadow_root = self.get_shadow_root(driver, element)
fly_to = shadow_root.find_element_by_css_selector('[placeholder="to"]')
fly_to.click()
fly_to.send_keys("Goa, India")
def get_shadow_root(self, driver, element):
return driver.execute_script('return arguments[0].shadowRoot', element)