Besoin de vider ensemble de l'arborescence du DOM avec id d'élément de sélénium serveur

J'ai été en utilisant python sélénium pour le web automatisation des tests. La partie clé de l'automatisation est de trouver le bon élément pour un utilisateur-objet visible dans une page HTML. La suite de l'API fonctionne la plupart du temps, mais pas tout le temps.

find_element_by_xxx,  xxx can be id, name, xpath, tag_name etc. 

Lorsque la page HTML est trop compliqué, je voudrais de recherche de l'arborescence dom. Me demande si il est possible de demander le sélénium serveur pour sérialiser l'ensemble DOM (avec l'id de l'élément qui peut être utilisé pour réaliser une action par le biais de webdriver serveur). Côté Client (script python) ne peut faire son propre algorithme de recherche pour trouver le bon élément.

Noter que python le sélénium peut obtenir la totalité de la page html par

drv.page_source

Cependant, cette analyse ne donne pas l'élément interne id de sélénium du serveur de point de vue, n'est donc pas utile.

EDIT1:
Paraphrase pour le rendre plus clair (merci @alecxe): ce qui est nécessaire ici, c'est une représentation sérialisée de tous les éléments du DOM (avec leur DOM structure conservée) dans le selenium server, cette représentation sérialisée peuvent être envoyés pour le côté client (un python de sélénium application de test), ce qui peut faire sa propre recherche.

Qu'entendez-vous par "interne à l'id de l'élément de sélénium serveur de point de vue"? Dans les DOM, il n'y a pas de interne de l'élément id: l'id est un public caractéristiques des éléments. Peut-être vous dire à vous référer à l'identifiant que le Sélénium associés avec des éléments lorsque vous utilisez les fonctions pour trouver des éléments. Ceci est distinct de la DOM et une sérialisation des DOM ne vous donnera pas cette. Aussi, j'ai écrit beaucoup de suites de test avec le Sélénium et n'a jamais trouvé un cas où la sérialisation de l'ensemble DOM a été nécessaire. Cette question ressemble à un XY problème.
Merci @Louis pour les précisions sur l'élément identificateur. Oui, la sérialisation doit à la fois avoir les éléments du DOM et les identifiants des éléments. Le point est de faire de la recherche entièrement sur le côté client.
la recherche j'devez effectuer est trop complexe pour find_element_by... type d'API peut faire. Je n'ai pas le code. Pour vous donner une idée, c'est comme trouver le champ de texte qui est "proche" de l'étiquette de "Limite". Oui, il n'est pas suffisamment précise pour express avec un Xpath, sélecteur css etc.
oui, en théorie c'est faisable par une série de find_element_by mais il est extrêmement inefficace. Je suis vraiment intéressé de voir votre execute_script exemple, s'il vous plaît partager le lien si possible.

OriginalL'auteur packetie | 2014-08-18