Vérification automatique des sites Web et des systèmes Web à l'aide de Selenium.
Je ne peux pas obtenir cet élément en utilisant find_element_by_xpath
!
Je pourrais prendre l'élément juste avant ça ...!
À l'origine, il y avait un site Web qui disait: "Pour une raison quelconque, ce site ne peut pas être vérifié avec Selenium."
Eh pas question www La manière d'assembler la personne qui l'a fait (pas plus) est mauvaise www
Demandez aux membres: "Voudriez-vous vous rassembler?" Puis, ce mot a été renvoyé.
Je vois. J'ai tout jeté, alors voyons-le en HTML.
** Tout le monde, ajoutons des attributs de classe et d'identifiant au HTML! ** **
… Mais il est absurde de modifier l'écran pour faire une «automatisation de validation». Site Web Bien qu'il soit appelé site Web, le contenu est de toute façon un système Web. Cela peut être php ou JSP.
Cette fois, je veux obtenir le texte de l'article 2 à partir de sample.html
!
Je voudrais expliquer que c'était une exigence.
sample.html
<html>
<head><!--réduction--></head>
<body>
<div id='wrap'>
<div class='article'>
<article>
<h1>Titre de l'article 1</h1>
<div>
<p>Corps de l'article 1</p>
</div>
</article>
</div><!-- .article -->
<div class='article'>
<article>
<h1>Titre de l'article 2</h1>
<div>
<p>Corps de l'article 2</p>
</div>
</article>
</div><!-- .article -->
</div><!-- #wrap -->
</body>
</html>
Voici la méthode de spécification qui a été dite «ne fonctionne pas».
Ne marche pas.py
path = "/html/body/div/div[2]/article/div"
elmt = driver.find_element_by_xpath(path)
Il semble que vous vouliez spécifier le «div» dans le deuxième «article» du «div» (class = article) dans le «div» (id = wrap) dans le «body» du «html».
Hmmmm. N'est-ce pas "/ html / body / div [5]"?
Je pense que ça marche.py
path = "/html/body/div[5]"
elmt = driver.find_element_by_xpath(path)
Dans la spécification xpath, ** peu importe comment les éléments de l'écran sont imbriqués **.
** "Combien de fois le div est-il apparu du haut?" ** est le critère de jugement.
Est-ce similaire à la pseudo-classe CSS : nth-child ()
?
Je veux masquer le deuxième <div class = 'article'>
Diverses choses disparaissent.css
div#wrap div:nth-child(2) { display: none; }
Si vous spécifiez, le "second div" dans le premier "div # wrap" sera effacé. Dans le cas de sample.html, les textes de l'article 1 et de l'article 2 sont tous masqués. (Parce que c'est un échantillon, spécifiez la classe! ... Ne dites pas)
Hmm. Quelque chose ne va pas. ..
Après tout, une créature appelée programmeur est une race qui vit en se souciant des retraits et des nids, donc elle peut être mal comprise, mais je ne sais pas quel type de structure le HTML est écrit dans un programme externe. Qu'il s'agisse de CSS, de Python ou de Java, ils ne bougent pas à la lumière de la volonté humaine. Seules les ** personnes ** qui l'ont développé savent qu '«il y a plusieurs articles et il y a des blocs similaires» comme dans ce cas.
** Lors de la spécification d'un élément avec find_element_by_xpath, combien de fois l'élément apparaît-il en partant du haut? Notez s'il vous plaît **.
Recommended Posts