[PYTHON] Ich kann das Element in Selen nicht bekommen!

Die heutigen Probleme

Automatische Überprüfung von Websites und Websystemen mit Selen.

Ich kann dieses Element nicht mit find_element_by_xpath erhalten! Ich könnte das Element kurz davor nehmen ...!

Hintergrund

Ursprünglich gab es eine Website, auf der stand: "Aus irgendeinem Grund kann diese Website nicht mit Selen überprüft werden."

Eh auf keinen Fall www Die Art und Weise, die Person zusammenzusetzen, die es gemacht hat (nicht mehr), ist schlecht www

Fragen Sie die Mitglieder: "Möchten Sie wieder zusammenbauen?" Dann wurde dieses Wort zurückgegeben.

Das war's. Ich habe alles geworfen, also lass es uns in HTML sehen.

Diese Lösung

** Jeder, lasst uns HTML Klassen- und ID-Attribute hinzufügen! ** ** **

… Es ist jedoch Unsinn, den Bildschirm so zu ändern, dass eine „Validierungsautomatisierung“ durchgeführt wird. Website Obwohl es sich um eine Website handelt, handelt es sich bei dem Inhalt ohnehin um ein Websystem. Es könnte PHP oder JSP sein.

Dieses Mal möchte ich den Text von Artikel 2 von sample.html erhalten! Ich möchte erklären, dass dies eine Voraussetzung war.

sample.html


<html>
    <head><!--Kürzung--></head>
    <body>
        <div id='wrap'>
            <div class='article'>
                <article>
                    <h1>Artikel 1 Titel</h1>
                    <div>
                        <p>Hauptteil von Artikel 1</p>
                    </div>
                </article>
            </div><!-- .article -->
            <div class='article'>
                <article>
                    <h1>Artikel 2 Titel</h1>
                    <div>
                        <p>Hauptteil von Artikel 2</p>
                    </div>
                </article>
            </div><!-- .article -->
        </div><!-- #wrap -->
    </body>
</html>

Hier ist die Spezifikationsmethode, von der gesagt wurde, dass sie "nicht funktioniert".

Funktioniert nicht.py


path = "/html/body/div/div[2]/article/div"
elmt = driver.find_element_by_xpath(path)

Es scheint, dass Sie das "div" im zweiten "Artikel" des "div" (class = article) im "div" (id = wrap) im "body" im "html" angeben möchten.

Hmmmm. Ist das nicht "/ html / body / div [5]"?

Ich denke es funktioniert.py


path = "/html/body/div[5]"
elmt = driver.find_element_by_xpath(path)

In der xpath-Spezifikation spielt es keine Rolle, wie die Bildschirmelemente verschachtelt sind. ** "Wie oft ist der Div von oben erschienen?" ** ist das Kriterium für die Beurteilung. Ist es der CSS-Pseudoklasse : nth-child () ähnlich?

Ich möchte den zweiten "

" ausblenden

Verschiedene Dinge verschwinden.css


div#wrap div:nth-child(2) { display: none; }

Wenn Sie angeben, wird das "zweite Div" im ersten "Div # Wrap" gelöscht. Im Fall von sample.html sind alle Texte von Artikel 1 und Artikel 2 ausgeblendet. (Da es sich um ein Beispiel handelt, geben Sie die Klasse an! ... Sagen Sie nicht)

Hmm. Irgendwas stimmt nicht. ..

Fazit

Wie auch immer, die Kreatur, die als Programmierer bezeichnet wird, ist eine Rasse, die davon lebt, sich Gedanken über Einrückungen und Nester zu machen. Es kann also missverstanden werden, aber ich weiß nicht, welche Art von Struktur der HTML-Code in einem externen Programm geschrieben ist. Ob CSS, Python oder Java, sie bewegen sich nicht im Licht des menschlichen Willens. Nur die ** Leute **, die es entwickelt haben, wissen, dass "es mehrere Artikel gibt und es ähnliche Blöcke gibt" wie in diesem Fall.

** Wie oft wird das Element bei der Angabe eines Elements mit find_element_by_xpath von oben gezählt? Achten Sie bitte auf **.

Recommended Posts

Ich kann das Element in Selen nicht bekommen!
Wenn ich einen Chrom-Treiberfehler in Selenium bekomme
Ich kann keine Zeichen in den Textbereich eingeben! ?? !! ?? !! !! ??
Rufen Sie den im Pulldown-Menü Selenium Python VBA ausgewählten Wert ab
Iframe in Seite mit Selenium kann nicht bearbeitet werden
[Hinweis] Das installierte Modul kann nicht im Jupiter aufgerufen werden.
Ich kann den Darknet-Befehl in Google Colaboratory nicht verwenden!
Ich kann mich mit Django 3 nicht auf der Admin-Seite anmelden
Ermitteln Sie die Anzahl der Vorkommen für jedes Element in der Liste
Ruft den Index jedes Elements der Verwirrungsmatrix in Python ab
Ich bekomme einen UnicodeDecodeError mit mecab-python3
Ich habe mich im Labyrinth verlaufen
Ich habe an der ISUCON10-Qualifikationsrunde teilgenommen!
Holen Sie sich das erste Element von Queryset
Scikit-learn kann nicht in Python installiert werden
Ich habe die Warteschlange in Python geschrieben
Holen Sie sich den Desktop-Pfad in Python
Holen Sie sich den Hostnamen in Python
Ich habe den Stack in Python geschrieben
Holen Sie sich die Abfragezeichenfolge (Abfragezeichenfolge) mit Django
So bestimmen Sie die Existenz eines Selenelements in Python
Bei Verwendung von @property in Python wird ein Attribut nicht festgelegt
Was tun, wenn "Ich kann die Site nicht sehen !!!!"
Ich kann keine Module im übergeordneten Verzeichnis importieren, auch nicht mit sys.path.append ('..')
Holen Sie sich die IP-Adresse des Kunden mit Django
Holen Sie sich HTML von Element mit Python-Selen
Holen Sie sich die besten n-ten Werte in Pandas
Ich kann Python-Skripte in Eclipse nicht debuggen
Ich habe versucht, die verkratzten Daten in CSV zu speichern!
Schriftliche Auswahlsortierung in C.
Pythons "Ich kann den juckenden Ort nicht erreichen ..."
Ruft die EDINET-Codeliste in Python ab
Ich habe den Gleitflügel in der Schöpfung geschrieben.
Ich kann das Paket nicht mit pip installieren.
Warum kann ich matplotlib nicht mit Python installieren? !!
Python VBA, um mit Selenium die gesamte WEB-Seite zu erfassen
Klicken Sie auf die Selenium-Links, um die Elemente der einzelnen Seiten abzurufen
Ich kann die Befehle in dem von pip von Emacs eingeführten Paket nicht finden
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Holen Sie sich das Wetter in Osaka über Web-API (Python)
Ich kann den Parameter "next_results" nicht in der Twitter API Search API verwenden! ?? Ursachen und Abhilfemaßnahmen
Selen + Firefox 47+ Das Profil kann nicht geladen werden. Fehlerbehandlung
Importfehler: Der Name'Flask 'kann nicht importiert werden, wenn der Dateiname in Flask flask.py lautet
Ich habe die Methode der kleinsten Quadrate in Python ausprobiert
Holen Sie sich nur Unterklassenelemente in eine Liste
Bei Verwendung des Dialogfelds zum Öffnen des Verzeichnisses in Tkinter wird ein seltsames Fenster angezeigt
Ruft den Fenstertitel des X-Fenstersystems in Python ab
So erhalten Sie die Dateien im Ordner [Python]
Ich habe versucht, die inverse Gammafunktion in Python zu implementieren
Ich möchte den Dateinamen, die Zeilennummer und den Funktionsnamen in Python 3.4 erhalten
Ich habe den im Qiita Adventskalender 2016 gelöschten Kalender überprüft
Loggen Sie sich mit json mit pygogo ein.
Holen Sie sich das letzte Element des Arrays, indem Sie Zeichenfolgen in Python und PHP aufteilen
Ich habe versucht, Human In The Loop zu implementieren - Teil ① Dashboard -
Ich möchte den Fortschritt in Python anzeigen!
Ruft Zeilen mit bestimmten Elementen in np.where ab
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
So erhalten Sie den Variablennamen selbst in Python
Abrufen des Dateinamens in einem Ordner mithilfe von glob