Problème : Sélection d'un élément dans une iframe ou des iframes imbriquées sans changer explicitement frames.
Réponse :
Non, il n'est pas possible d'interagir directement avec les éléments des iframes sans passer à l'iframe respective. Le focus par défaut de Selenium reste sur la fenêtre supérieure.
Raison :
Lorsqu'une page Web est chargée, le focus de Selenium est sur la fenêtre principale (de niveau supérieur). Pour interagir avec les éléments d'une iframe, vous devez explicitement basculer vers cette iframe.
Méthodes de changement de cadre :
Il existe trois façons de changer de cadre :
Par cadre Nom :
driver.switch_to.frame("iframe_name")
Par ID de cadre :
driver.switch_to.frame("iframe_id")
Par cadre Index :
driver.switch_to.frame(0) # Index of the frame
Pour revenir en arrière au cadre principal, utilisez :
driver.switch_to.default_content()
Meilleure approche : WebDriverWait
Une meilleure approche consiste à utiliser WebDriverWait avec la condition frame_to_be_available_and_switch_to_it :
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID, "iframe_id")))
Cette méthode attend que le cadre spécifié soit disponible, puis passe à it.
Gestion des éléments chargés dynamiquement :
Si les éléments sont chargés dynamiquement, vous devrez peut-être utiliser ExpectedConditions pour attendre que l'élément devienne visible avant d'interagir avec lui :
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "element_id")))
Référence :
Pour plus d'informations, reportez-vous à :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!