셀레니움에서 페이지의 모든 폼 액션 URL을 가져오는 방법은?
_____A1: 셀레니움을 이용해 모든 폼 태그를 찾고, 각 폼의 `action` 속성 값을 추출하면 됩니다. 예를 들어, 파이썬에서는 다음과 같이 구현할 수 있습니다.
```python
from selenium import webdriver
driver = webdriver.Chrome() 드라이버 실행
driver.get('https://example.com') 대상 페이지 접속
forms = driver.find_elements_by_tag_name('form') 모든 form 태그 찾기
action_urls = []
for form in forms:
action = form.get_attribute('action') action 속성 값 가져오기
action_urls.append(action)
print(action_urls)
driver.quit()
```
---
Q2: action 속성이 비어 있거나 없는 폼은 어떻게 처리가 되나요?
A2: `action` 속성이 없는 경우 `get_attribute('action')`는 `None` 혹은 빈 문자열을 반환합니다. 이 경우 폼은 현재 페이지 URL로 서브밋됩니다. 필요한 경우 `None` 혹은 빈 값 여부를 체크해 처리할 수 있습니다.
---
Q3: 자바스크립트로 동적으로 생성된 폼의 action도 정확히 가져올 수 있나요?
A3: 네, 셀레니움은 실제 브라우저를 구동하므로 자바스크립트가 동작해 폼이 생성되거나 변경된 후에는 정상적으로 `action`을 가져올 수 있습니다. 다만, `driver.get()` 후 충분한 시간 혹은 명시적 대기(explicit wait)를 줘서 폼이 모두 생성된 상태에서 액션 값을 읽어야 합니다.
---
Q4: 여러개의 action URL을 리스트로 저장해 활용 가능합니까?
A4: 네, 각 폼의 action URL을 파이썬 리스트 등 자료구조에 저장해서 크롤링, 검사, 자동화 작업에 사용할 수 있습니다.
---
Q5: 프레임(frame) 혹은 iframe 안의 폼 액션을 가져오려면 어떻게 해야 하나요?
A5: 프레임 내부의 DOM은 별도 컨텍스트입니다. 먼저 `driver.switch_to.frame()`으로 해당 프레임/아이프레임으로 전환한 후, 폼을 찾아서 action 속성을 가져와야 합니다. 여러 프레임이 있으면 반복해서 처리해주어야 합니다.
---
요약
- `driver.find_elements_by_tag_name('form')` 또는 최신 API의 `driver.find_elements(By.TAG_NAME, 'form')`로 폼 태그를 모두 찾는다.
- 폼별로 `.get_attribute('action')`으로 액션 URL 추출.
- 자바스크립트 실행이 완료된 후 추출해야 올바른 값 확보 가능.
- 프레임 내 폼은 `switch_to.frame()` 후 접근.
- 추출한 리스트를 활용해 자동화 작업에 적용 가능.
작성자:
박시현 [비회원]
| 작성일자: 1년 전
2024-11-06 11:02:34
조회수: 202 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 202 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.