특정 사이트를 언급하기는 힘들지만 공기업 관련 사이트를 제어하다 보면 우리가 아는 방식과는 많이 어긋나 있는 것을 볼 수 있다. 일부러 보안때문에 그런거 일수도 있지만 연구를 하는 우리들에게는 맛있는 먹잇감이 될 수 있다...ㅋㅋㅋ
같은 크루인 청곡님이 몇일전부터 같은 질문을 하시길래 왜 해결이 안되지...어려운게 아닌데 하고 넘어가곤 하다가 어제 본인의 약주가 심했던지라 업무 집중도 안되서 청곡님과 갠적으로 연락하여 막힌 코드를 보게 되었다.
천천히 코드를 진행하면서 개발자도구로 태그를 보게 되었는데
와..이건 청곡님이 못하는게 아니라 코드가 진짜 일부러 하지 않으면 이렇게까지 할 수 있을까 정도로 난해하고 지저분했다. CSS를 모든 태그에 입혀놨는데 이건 와 다시 생각해도 엄두가 안날 정도였다.
허나 너무 다행인건 웹상에 보인다는건 자바스크립트로 제어가 가능하다는 것이기 때문에
셀레니움이나 기타 어떤 방법도 안된다고 하면 자바스크립트를 이용하여 제어 해보는것을 추천한다.
Set nodes = driver.FindElementsByCss("#:id값 / .:class값 / [아무것도없음]:태그값)
만약 태그가 부모 태그 밑의 tr 태그를 순환해야 하거나 / div 태그를 순환해야 한다면
tr 태그 순환 : Set nodes = driver.FindElementsByCss("#haja > tr")
idv 태그 순환 : set nodes = driver.FindElementsByCss("#haja > div").
이렇게 하면된다.
노드의 갯수를 확인하는 방법은
nodes.count
이렇게 하면된다.
물론 저 nodes는 변수로 본인들의 설정한 변수의 카운드매소드를 적으면 된다.
Set nodes = driver.FindElementsByCss("#main > div")
driver.ExecuteScript "arguments[0].textContent='" & 수행일자 & "'", nodes(3).FindElementsByTag("div")
driver.ExecuteScript "arguments[0].textContent='" & 시작시간 & "'", nodes(4).FindElementsByTag("div")
driver.ExecuteScript "arguments[0].textContent='" & 종료시간 & "'", nodes(5).FindElementsByTag("div")
driver.ExecuteScript "arguments[0].textContent='" & ceo면담 & " '", nodes(6).FindElementsByTag("div")
여기서 nodes.count는 12개였고, 각각의 nodes의 인덱스 값을 넣어서 제어하면 된다.
nodes(3).FindElementsByTag("div") 이 코드를 설명하면 nodes(3)번째 태그중 그 자식 태그인 div를 의미한다.
즉 id가 main인 요소의 자식요소인 div를 가진 노드의 3번째 노드의 그 자식요소를 div를 의미한다.
id > div > div
driver.ExecuteScript -> 셀레니움에서 자바스크립트 호출
driver.ExecuteScript "arguments[0].textContent='" & 수행일자 & "'" -> 수행일자의 변수를 textContent의 값으로 변경해라
driver.ExecuteScript "arguments[0].textContent='" & 수행일자 & "'", nodes(3).FindElementsByTag("div") -> 변경할 태그의 값은 nodes(3).FindElementsByTag("div")이다...
driver.ExecuteScript "arguments[0].textContent='변경할 값'", node
이게 기본값이다.
textContent대신 Click()을 하면 클릭된다.
개발자도구의 콘솔창에서 id값으로 str변수를 선언한 후 textContent를 하게 되면 해당 태그의 innerText값을 가져올 수있다.
앞서 보인 코드는 기존 textContent의 값을 변경하는 코드이다.
나중에는 요렇게도 장난을 칠 수도 있다.
'VBA > 엑사남_심화방' 카테고리의 다른 글
[심화방] VBA_심화_100제 #21 [ 서울시 상권분석 크롤링 ] (0) | 2024.03.12 |
---|---|
[심화방] 복잡한 태그속에서 원하는 값 가져오기 (0) | 2023.08.20 |
[심화방] VBA_심화_100제 #19 [ 유튜브목록 가져오기] (0) | 2023.06.13 |
[심화방] VBA_심화_100제 #18 [ 유튜브댓글 조회하기] (0) | 2023.06.12 |
[심화방] VBA_심화_100제 #17 [ 당근마켓 조회하기] (0) | 2023.04.17 |
댓글