beomi.github.io/gb-crawling/posts/2017-09-28-HowToMakeWebCrawler-Headless-Chrome.html
www.hanumoka.net/2020/07/06/python-20200706-python-selenium-headless/
이 블로그를 보고 headless로 동작하더라도 충분히 동적인 부분을 컨트롤 가능한데 왜 난 안되는가에서 창의 사이즈 때문이라는 힌트를 얻을 수 있었다.
내가 알아낸 점.
headless방법을 사용할 때는 창의 크기를 맞춰줘야한다.
웹사이트에서는 창의 크기가 충분히 크면 자동으로 보이는 요소가 있고, 창이 작을 때는 숨는 요소가 있다.
이럴 때 요소가 숨어버리면 css selector로 찾지를 못한다.
options.add_argument('--start-fullscreen') 이것이 백그라운드에서 화면의 크기를 키워줄 줄 알았는데 headless에서는 동작하지 않는 듯 하다.
-> headless로 동작할 때 --start-fullscreen은 동작하지 않는다.
options.add_argument('window-size=1920x1080')를 통해서 사이즈를 키워주고나니깐 올바르게 동작했다
몇 번 실행이 안되는 것을 보고 바로 혹시 이것 때문인가 했는데,, 맞췄다. 개쩌는 듯.
(아마 JS가 코드를 계속 다르게 생성하기 때문인듯? 사람들이 css selector보다 xpath를 자주 사용하던데 그래서 그런가??, 그게 더 좋나?
찾아봐야 할 듯. )
headless를 하기 전에는 1920*1080이 아니라 start-fullscreen으로 진행했다. headless가 아닌 창을 띄우는 방식으로 실행할 때는 1920*1080은 동작하지 않는다.. start-fullscreen은 잘 동작함..