2017-03-03 1 views
1

나는 웹 페이지 https://www.realtor.ca/으로 이동하여 특정 위치를 검색하는 스크립트를 파이썬으로 작성하고 있습니다. 내 문제는 시작에 있습니다. 가운데에서 페이지를 열면 큰 검색 요소가 나타납니다. 해당 요소의 HTML은 다음과 같습니다셀렌을 사용하여 ID로 요소를 찾을 수 없습니다.

<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;"> 

내가 find_element_by_id 방법으로 요소에 액세스하려고하지만 난 항상 오류 얻을 : 메시지 :

이가 [ID = "home_search_input"] : 요소를 찾을 수 없습니다를 내 코드 :

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") 

아무도 비슷한 문제가 발생했거나 해결 방법을 알고 있습니까?

+0

무엇을 종료하지 않는 웹 페이지 – depperm

+0

@depperm에 존재하지 않는? – Nenad

+0

'중간에 페이지를 열면 큰 검색 요소가 있습니다. 해당 요소의 HTML은'....입니다. 숨겨진 HTML이므로 해당 검색의 HTML이 아닙니다. – depperm

답변

3

페이지로 이동할 때, id가 home_search_input 인 요소는 처음에는 보이지 않습니다. "Where is you looking"자리 표시자를 클릭하면 표시됩니다 (사라짐). 테스트에서 명시 적으로이 작업을 수행해야합니다.

또한 상호 작용하는 요소가 올바르게로드되고 렌더링되도록하려면 암시 ​​적 또는 명시 적 wait 문을 사용해야합니다.

다음은 Java 클라이언트 바인딩을 사용하여 페이지에 대한 예입니다 - 파이썬은 매우 비슷해야합니다

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"); 
관련 문제