Today what i've get
https://stackoverflow.com/questions/714063/importing-modules-from-parent-folder
pycharm을 쓴다면, 폴더를 지정(mark as ...)하여 사용할 수 있지만 요즘은 다시금 vscode를 쓰다보니 이러한 문제가 발생했다.
(각 스크립트 파일마다 보는 관점도 다르니 언젠간 필요한 내용이었지만..)
from ... import <module_name>
이 방법은 내가 사용하니 통하지 않았다.
import os,sys,inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
sys.path.insert(0,parentdir)
import <module_name>
나에겐 이 방법이 효과적이었다.
# same code like above... #
from util import scroller, webdriverManager
이러한 형태로 사용하고 있다.
https://selenium-python.readthedocs.io/waits.html
어제에 3가지 방법이 있다고 얘기했었는데
# second
time_out = 3
# implicit wait
driver.implicitly_wait(time_out)
# explicit wait
WebDriverWait(driver, time_out).until(lambda d: d.find_element_by_xpath(dest_elem_xpath))
# fluent wait
wait = WebDriverWait(driver, time_out, poll_frequency=1, ignore_exception=[Eception_What_I_Expected])
각각 특징이 있는데, 간단하게 말하자면
implicit wait
: 그저 기다린다.
explicit wait
: 내가 목표한 대상이 로드되었는지, 어떠한 상태가 되었는지를 기대하며 기다린다.
- selenium
은 rendered JS를 포함한 html을 사용할 수 있기 때문에 렌더링되는 시간이 걸린다.위의 코드의 경우 렌더링된 이후 등장하는 xpath를 (기대하며) 기다리는 것이다.
- 어떤 목표를 갖고 기다리기 때문에, 기대한 상태가 충족되지 못하면 에러를 반환한다.
fluent wait
: explicit wait
의 단점이 예외상황에 대해서 에러를 반환하는 것이라면, fluent wait
는 해당 에러에 대응하며 기다린다고 볼 수 있겠다. (근데 잘안되더라.. 그리고 아직은 필요성을 느끼지 못하고 있다.)
요즘 날이 선선해서 아주 좋다.🎁
조금 있으면 생일이다.
시간이 참 빨리 가는구나! 기운내서 더 열심히 해야지 😄 😄 😄