2017-04-05 1 views
0

Je veux automatiquement, cliquez sur un élément dans une page Web en utilisant le code suivant en Python:Trouver l'ID d'un élément dans une page Web à utiliser avec le sélénium

driver.find_element_by_id("book appointment").click() 

L'instantané de la page Web est la suivante : enter image description here

Mon problème est que je ne trouve pas de texte "Book Appointment" dans la source de la page pour extraire son ID. Comment puis-je trouver son identifiant?

+3

Utilisez des outils de développement chromés ou l'extension firefox firefox pour inspecter l'élément. En chrome, faites un clic droit sur l'élément et sélectionnez "inspecter". Cela vous amènera à l'élément dans le dom. Ensuite, vous pouvez voir si cet élément a un 'ID', ou si vous devrez l'identifier avec un autre attribut. Si cela suffit pour répondre à votre question, faites le moi savoir et je l'afficherai comme réponse. – mrfreester

+1

nous devons voir le code source de la page –

+0

Pouvez-vous ajouter le code html de ce bouton que vous souhaitez localiser – NarendraR

Répondre

2

Le code html fourni par vous ne contient aucun attribut Id pour cet élément. Il n'est donc pas possible de localiser l'élément par ID. Vous pouvez également localiser l'élément avec du texte en utilisant le sélecteur xpath. Essayez le code ci-dessous pour trouver le même

driver.find_element_by_xpath("//a[contains(.,'Book Appointment')]") 
+0

Merci. Mais cet extrait de code déclenche l'erreur suivante: 'selenium.common.exceptions.NoSuchElementException: Message: Impossible de localiser l'élément: //a[contains(., 'Book Appointment')]' – Hossein

+1

J'ai trouvé quel était le problème. Je devrais attendre jusqu'à ce que la page soit complètement chargée. – Hossein

1

find_element_by_id nécessite un identifiant en entrée. Vous donnez du contenu textuel en entrée.

Vous voudrez peut-être essayer un autre sélecteur. peut être find_element_by_link_text.

Il existe différentes stratégies pour localiser des éléments dans une page.

Methods to locate elements in a page:

  • find_element_by_id
  • find_element_by_name
  • find_element_by_xpath
  • find_element_by_link_text
  • find_element_by_partial_link_text
  • find_element_by_tag_name
  • find_element_by_class_name
  • find_element_by_css_selector

To find multiple elements

  • find_elements_by_name
  • find_elements_by_xpath
  • find_elements_by_link_text
  • find_elements_by_partial_link_text
  • find_elements_by_tag_name
  • find_elements_by_class_name
  • find_elements_by_css_selector

pour référence sur chaque sélecteur, vous pouvez vous référer the link.

+0

Oui, j'ai donné '' rendez-vous au livre '' comme dans l'indicateur. J'ai essayé 'find_element_by_link_text' mais cela n'a pas fonctionné. – Hossein

+1

@Hossein le texte du lien est * pas * '" "rendez-vous" ', plutôt, il est' "    Book Rendez-vous" '. –

+0

@ Hossein avez-vous essayé avec xpath? ça devrait marcher. Essayez d'abord avec xpath fixe, puis essayez de rendre votre xpath générique. Encore une fois cela dépend de la page Web. – Haranadh