• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 엔지니어링

  • 해결 여부

    미해결

실전 크롤링: XPATH와 Selenium 활용해서 페이스북 로그인 하기 에서 질문이 있습니다.

21.07.10 17:22 작성 조회수 120

0

11:24 를 보면 코드중에

email_id="//*[@id='email']"로 정의한 뒤  email_tag=WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, email_id)))

라는 코드가 있는데 WebDriverWait은 제가 이해하기로는 XPATH의 값이 email_id인것이 뜰 때 까지 10초동안은 기다릴 수 있게 하는 명령인것 같습니다.

이때 궁금한점이 이전강의에서는 클릭이나 키보드 입력 등을 활용할때 webdriver.ActionChains(driver).click(more botton).perform()

이런방식으로 동작했었는데 이제는

email_tag.click() 이런식으로 WebDriverWait~~~ 로 정의된 변수를 앞에 두는것을 보았습니다.

그런데 직관적으로는 email_id를 집어넣어야 할 것 같은데 왜 기다리라는 명령?에 관련되어 변수로 정의된 값을 앞에 넣어줘야지만 동작할까요? email_id를 넣어보니 동작하지 않더군요 ㅠㅠ 

답변 1

답변을 작성해보세요.

0

안녕하세요.

워낙 사이트 구현이 다르기 때문에, 각 사이트마다, 다양한 함수를 적용해보는 것이 필요합니다. 여기서 WebDriverWait 를 쓴 이유는, 아마도 페이스북의 로그인 기능은 동적으로 해당 태그들이 생성이 되는 것 같습니다. 그래서, 사이트가 웹브라우저에 보여진 후에, 해당 로그인 관련 태그들이 동적 생성되어, 그 후에 약간의 시간차를 두고 로그인 태그가 화면에 표시되는 것으로 보여졌었습니다.

그래서 이러한 시간 차를 기다리기 위해, WebDriverWait 를 사용하였습니다. 이를 통해, 일정 시간 해당 태그가 보여질 때까지 기다린 후에, 동작을 적용하게 만들었습니다.

감사합니다.

잔재미코딩, Dave Lee 드림