Benötige xpath-Locators für sichtbare Elemente

Ich versuche, einen Test für meine Website zu machen. Schwierigkeiten auf einem Benutzerformular haben. Der Trick ist, dass die Anzahl der Textfelder in der Form je nach Benutzeroptionen variiert (deaktivierte sind im Code vorhanden, aber haben einen Stil < displayed: none; > Tag), also versuche ich, flexibler zu finden Als jedes Element einzeln zu lokalisieren und die Formulare mit try / except Blöcken zu füllen.

Ich benutze einen xpath-Locator

text_fields = driver.find_elements_by_xpath("//div[@class='form-line']/div[@class='form-inputs']/input[@type='text' and not(ancestor::div[@style='display: none;'])]")

Das Problem ist, dass Firebug nur benötigte Elemente findet, aber wenn ich es meine Selen-Skript verwende, text_fields die Liste der text_fields gibt mir alle Elemente, auch ohne < displayed: none; > Tag

Wie bekomme ich nur sichtbare Elemente?

PS Sorry für mein schlechtes Englisch ^ _ ^

3 Solutions collect form web for “Benötige xpath-Locators für sichtbare Elemente”

Sie können alle Formularelemente auf die übliche Weise erhalten, dann auf der Liste iterieren und die Elemente entfernen, die bei is_displayed() nicht zurückkehren.

Versuchen Sie die contains() Methode:

 text_fields = driver.find_elements_by_xpath( "//div[@class='form-line']/div[@class='form-inputs']/input[@type='text' and not(ancestor::div[contains(@style, 'display: none;')])]") 

Der wichtige Teil ist:

 div[contains(@style, 'display: none;')] 

Beachten Sie, dass, wenn der Stil die String- display:none; enthält display:none; Oder display:none , der Selektor stimmt nicht überein.

Ich benutze das folgende und es funktioniert super.

 self.assertTrue(driver.find_element_by_xpath("//div[@id='game_icons']/div/div[2]/div/a/img")) 

Das ist für Selen und Python natürlich.

  • Xpath funktioniert nicht mit dieser Website, überprüfen pls
  • Schreibe xml aus der Liste der Pfade / Werte
  • Python xpath funktioniert nicht?
  • Wertattribut für lxml.html
  • Kratzen neuer ESPN-Site mit xpath [Python]
  • Wie ordnungsgemäß verwenden Regeln, beschränken_xpaths zu crawlen und analysieren URLs mit scrapy?
  • Python lxml.html XPath "Attribut nicht gleich" Betreiber funktioniert nicht wie erwartet
  • Können wir xpath mit BeautifulSoup benutzen?
  • Warum funktioniert xpath nicht bei der Verarbeitung eines XHTML-Dokuments mit lxml (in python)?
  • Python Crawler nicht finden spezifische Xpath
  • Dynamische Suche durch XML-Attribute mit lxml und xpath in python
  • Python ist die beste Programmiersprache der Welt.