J'essaie d'obtenir tous les éléments d'identification dans une certaine page Web. Je peux trouver l'élément UL qui les contient et je peux même trouver un élément spécifique par ID (c.-à-d. Browser.Find_Element_by_id ('380797')), mais lorsque je exécute Browser.Find_All_elements_by_tag_name ('ID') Le résultat est un Liste vide. J'ai aussi essayé par CSS ou XPath, même résultat. P>
Comment puis-je obtenir tous les éléments d'identification dans la liste? Le HTML ressemble à quelque chose comme ça: p>
3 Réponses :
Vous pouvez utiliser Execute_script. (meilleur moyen à mon avis)
browser.find_elements_by_xpath("//div[@id="placards-container"]/ul/div[contains(@class,'placard')]
The contains() method is the best approach for detecting the exact type of elements.
Utilisez des attributs généraux présents dans tous les éléments. La règle est la suivante: trouvez tous les DIV avec ID de la DIV avec ID de placards-conteneur. P>
CSS: xpath:
browser.find_elements_by_css_selector ("# Palaiseurs-conteneur-conteneur div [ID]") code> ou de
browser.find_elements_by_csss_selector ("# Palaiseurs-conteneur-conteneur UL> div [ID]") code> p>
browser.find_elements_by_xpath ("// div [@ Id = 'Palaiseurs-conteneur'] // div [@ID]") code> ou
browser.find_elements_by_xpath ("// div [@ ID = 'Palaiseurs-conteneur'] / ul / div [@ID]") code> p> p>
Spécifiquement sur ID, il peut être dynamique et modifier chaque fois que la page est rendue. Une autre chose à vérifier est de savoir si la section de la page utilisée est à l'intérieur d'une iframe. Si c'est le cas, vous devez la passer d'abord.
Merci @eugenes. J'ai du mal à comprendre si cette partie est à l'intérieur d'un iframe, quelle est la meilleure façon de le faire? De plus, si c'est à l'intérieur d'un iframe, comment est-ce que je peux localiser un élément d'identifiant spécifique mais pas tous les éléments d'identification?
Tag_Name fait référence au nom de la balise. Par exemple, div dans
. Donc, la raison de votre sélection n'a pas fonctionné est que la balise n'est pas appelée ID (l'attribut est).