Le html est le même pour l'entrée à l'intérieur d'une table. Il est différencié par le td mais c'est la ligne avant l'entrée. Je peux trouver le td via find_element_by_id ("col3-month46")
mais ce n'est pas là que se trouve l'entrée. Comment écrire un xpath qui trouve le td mais passe ensuite à l'entrée?
J'ai essayé d'utiliser xpath (je crois que c'est comme ça que je vais accéder à l'entrée).
<td _ngcontent-c4="" class="text-center ng-pristine ng-valid ng-touched" formarrayname="timedoe" id="col11-month44"> <!----> <input _ngcontent-c4="" max="24" maxlength="4" min="0" name="Monthtime" size="2" class="ng-pristine ng-valid ng-touched" type="number"> </td> <td _ngcontent-c4="" class="text-center ng-pristine ng-valid ng-touched" formarrayname="timedoe" id="col3-month45"> <input _ngcontent-c4="" max="24" maxlength="4" min="0" name="Monthtime" size="2" class="ng-pristine ng-valid ng-touched" type="number"> </td> <td _ngcontent-c4="" class="text-center ng-pristine ng-valid ng-touched" formarrayname="timedoe" id="col3-month46"> <input _ngcontent-c4="" max="24" maxlength="4" min="0" name="Monthtime" size="2" class="ng-pristine ng-valid ng-touched" type="number"> </td>
Eh bien, quand je le trouve via l'ID, il dit que ce n'est pas un champ de saisie. Si je devais le trouver via la balise d'entrée, alors avec le sélénium, il n'entrerait qu'à la première instance et non là où je le veux.
3 Réponses :
Vous pouvez trouver l'élément td
que vous recherchez, puis rechercher son élément input
enfant.
Donc, ce XPath devrait fonctionner pour vous: p >
find_element_by_xpath('//td[@id="col3-month46"]/input')
Et dans Python Selenium:
//td[@id="col3-month46"]/input
Impressionnant! J'avais le bon xpath, je ne savais tout simplement pas comment y accéder. L'entrée / a fonctionné tho. Je vous remercie.
Vous pouvez vérifier votre Xpath avec l'extension Chropath Lorsque vous cliquez sur inspecter et sélectionnez ChroPath, vous verrez votre Xpath:
Vous pouvez également copier votre XPath en cliquant sur le bouton Copier Cette extension vous donnera REL XPATH ~ ABS XPATH ~ CSS SELECTOR
ICI IL Y A UN LIEN:
ET CETTE EXTENSION AUSSI POUR FIREFOX ICI EST FIREFOX LINK:
https: // addons. mozilla.org/en-US/firefox/addon/chropath-for-firefox/?src=search
Cela ne fonctionne pas car il donne le chemin exact et le sélénium ne l'utilise pas.
il fonctionnera surtout son travail sur le chemin des abdos, vous pouvez l'essayer, vous verrez que votre travail se déroule facilement
regardez les autres réponses et le xpath.
Il semble que vous vouliez obtenir une entrée
avec un identifiant unique dans le parent
, vous pouvez utiliser xpath
pour y parvenir. Dans votre cas, vous saisissez
avez name = Monthtime
et le parent
a id = col3-month45
, alors essayez cette méthode:
find_element_by_xpath('//input[@name="Monthtime" and ./parent::*[@id="col3-month45"]]')
J'ai essayé l'autre commentaire (j'avais le xpath au parent) où j'ajoute le "/ input" qui fonctionne mais j'ai aussi essayé votre recommandation. Cela fonctionne également. Je vous remercie.
J'ai marqué la réponse de @Kamal en raison de la simplicité, mais la réponse de Frian fonctionne également.