2017-03-03 7 views
1

finden Ich mache ein Skript in Python, das auf einer Webseite https://www.realtor.ca/ geht und sucht nach einem bestimmten Ort. Mein Problem ist ganz am Anfang. Wenn Sie eine Seite in der Mitte öffnen, handelt es sich um ein großes Suchelement. Html für dieses Element ist:Kann Element nicht durch ID mit Selen

<input name="ctl00$elContent$ctl00$home_search_input" 
maxlength="255" id="home_search_input" class="m_hme_srch_ipt_txtbox" 
type="text" style="display: none;"> 

Ich versuche, das Element mit find_element_by_id Methode zuzugreifen, aber ich bekomme immer den Fehler: Meldung: Kann Element suchen: [id = "home_search_input"]

Dies ist mein Code:

from selenium import webdriver as web 
Url = "https://www.realtor.ca/" 
browser = web.Firefox() 
browser.get(Url) 
TextField = browser.find_element_by_id("home_search_input") 

gestoßen jemand ein ähnliches Problem oder jemand weiß, wie man es beheben?

+0

, das nicht existiert auf dieser Webseite – depperm

+0

@depperm was verläßt nicht? – Nenad

+0

'Wenn Sie eine Seite in der Mitte öffnen, ist ein großes Suchelement. Html für dieses Element ist '.... das ist nicht das HTML für diese Suche, weil es versteckt ist – depperm

Antwort

3

Beim Navigieren zu der Seite ist das Element mit der ID home_search_input zunächst nicht sichtbar. Es scheint, dass diese nur sichtbar wird, wenn Sie auf den Platzhalter klicken (der dann verschwindet). Sie müssen dies explizit in Ihrem Test tun.

Stellen Sie außerdem sicher, dass Sie implizite oder explizite Warteanweisungen verwenden, um sicherzustellen, dass die Elemente, mit denen Sie interagieren, ordnungsgemäß geladen und gerendert werden.

Hier ist ein Beispiel für die Seite, um die Java-Client-Bindungen mit - Python sollte recht ähnlich sein:

driver.get("https://www.realtor.ca/"); 

new WebDriverWait(driver, 5).until(ExpectedConditions.elementToBeClickable(By.id("m_hme_wherelooking_lnk"))).click(); 
driver.findElement(By.id("home_search_input")).sendKeys("demo"); 
Verwandte Themen