2017-12-04 3 views
-1
company_name = 'google' 
browser.get('https://m.tianyancha.com/search?key=&checkFrom=searchBox') 
ele = browser.find_element_by_xpath("//input[@id='live-search']") 
ele.clear() 
ele.send_keys(company_name, Keys.ENTER) 
name = browser.find_element_by_xpath(
      "//div[@class='new-border-bottom pt5 pb5 ml15 mr15'][1]//a[@class='query_name in-block']/span/em") 

if name.text: 
    if name.text == company_name: 
     check = '1' 
    else: 
     check = '0' 
else: 
    check = '0' 

den Fehler zu lokalisieren ist:Python + Selen XPath Unable Element

NoSuchElementException: Mitteilung: kein solches Element: Kann nicht Element lokalisieren: { "Methode": "XPath", "Selektor" "// div [@ class = 'new-border-bottom pt5 PB5 ML15 MR15'] [1] // a [@ class = 'QUERY_NAME in-Block']/span/em"}

+0

Ohne den HTML-Code zu sehen, gibt es keine Möglichkeit zu wissen, warum dies fehlgeschlagen ist. Ein mögliches Problem könnte sein, dass XPath nach einer wörtlich genauen Übereinstimmung für das Klassenattribut sucht, aber die Klassenliste wurde geändert, was zu einem Klassenattributwert (der nur eine Zeichenkette ist) mit hinzugefügten, entfernten oder neu angeordneten Klassen führen kann. Sie sollten wahrscheinlich so etwas wie 'div [contains (@class, 'new-border-bottom')] verwenden, wenn '.new-border-bottom' hier die relevante Klasse ist. –

Antwort

0
:

Ihr relativer Xpath ist falsch.

name = browser.find_element_by_xpath(
      "//div[@class='new-border-bottom pt5 pb5 ml15 mr15'][1]//a[@class='query_name in-block']/span/em" 

Sie können // nicht zweimal in Ihrem XPath haben. // bedeutet relative von dem Element, mit dem Sie beginnen.

Überprüfen Sie Ihren Xpath nach Namen.