2017-08-03 3 views
0

Ich versuche, ein Element mit Python Selen zu suchen, und haben den folgenden Code:Unable Element in Python Selen lokalisieren

zframe = driver.find_element_by_xpath("/html/frameset/frameset/frame[5]") 
driver.switch_to.frame(zframe) 
findByXpath("/html/body/form/table/tbody/tr/td[2]/label[3]").click() 
element = driver.find_element_by_xpath("//*[@id='awdType']") 

Ich erhalte die Fehlermeldung, dass:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id='awdType']"} (Session info: chrome=59.0.3071.115)

Irgendwelche Ideen, warum es dieses Element möglicherweise nicht finden kann? Ich habe den exakten xpath benutzt, indem ich ihn kopiert habe und auch Frames gewechselt habe. Vielen Dank!

+0

Welche Website kriechen Sie? – ksai

+0

Der Fehler 'Unable to locate element' sagt alles. Entweder ist der 'xpath' des Elements falsch oder das Element ist nicht vorhanden/sichtbar. Danke – DebanjanB

Antwort

1

Das Problem tritt auf, weil awdType von Ajax oder Jquery geladen wird. Sie sollten selenium Waits. verwenden Es gibt zwei Arten von Wartestatus explizit und implizit. Vermeiden Sie implizite Wartezeiten.

# Explicit wait example 
from selenium.webdriver.support import expected_conditions as EC 

wait = WebDriverWait(driver,20) 
element = wait.until(EC.element_to_be_clickable((By.ID, 'awdType'))) 

ODER

# implicit wait example 
driver.implicitly_wait(10) # seconds 
element = driver.find_element_by_xpath("//*[@id='awdType']") 
+0

Wie können Sie schließen, 'awdType wird von Ajax oder Jquery geladen? Dank – DebanjanB

+0

Dieser Artikel wird in die dom nicht gemacht wird, wenn das Skript an element = driver.find_element_by_xpath („// * [@ id =‚awdType‘]“) –

+0

Daraus erreicht, erhalte ich die Fehlermeldung, dass „WebDriverWait“ ist undefiniert, auch wenn ich die obige Kopfzeile für den Import von "expected_conditions" als EC –