-
카테고리
-
세부 분야
데이터 엔지니어링
-
해결 여부
미해결
실전 크롤링: 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를 넣어보니 동작하지 않더군요 ㅠㅠ
답변을 작성해보세요.
0
잔재미코딩 DaveLee
지식공유자2021.07.12
안녕하세요.
워낙 사이트 구현이 다르기 때문에, 각 사이트마다, 다양한 함수를 적용해보는 것이 필요합니다. 여기서 WebDriverWait 를 쓴 이유는, 아마도 페이스북의 로그인 기능은 동적으로 해당 태그들이 생성이 되는 것 같습니다. 그래서, 사이트가 웹브라우저에 보여진 후에, 해당 로그인 관련 태그들이 동적 생성되어, 그 후에 약간의 시간차를 두고 로그인 태그가 화면에 표시되는 것으로 보여졌었습니다.
그래서 이러한 시간 차를 기다리기 위해, WebDriverWait 를 사용하였습니다. 이를 통해, 일정 시간 해당 태그가 보여질 때까지 기다린 후에, 동작을 적용하게 만들었습니다.
감사합니다.
잔재미코딩, Dave Lee 드림
답변 1