>source

이 코드는 cbt 너깃에 로그인하고 나중에 내 재생 목록으로 이동하여 URL을 수집하고 싶습니다.

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.support import ui
capabilities = DesiredCapabilities.CHROME
capabilities["goog:loggingPrefs"] = {"performance": "ALL"}  # chromedriver 75+
options = webdriver.ChromeOptions()
options.add_argument(f"user-data-dir={userdata_path}") #Path to your chrome profile
# options.add_experimental_option("excludeSwitches", ['enable-automation'])
# options.add_experimental_option("excludeSwitches", ["ignore-certificate-errors", "safebrowsing-disable-download-protection", "safebrowsing-disable-auto-update", "disable-client-side-phishing-detection"])
driver = webdriver.Chrome(executable_path=webdriver_path, options=options)
driver.get("https://www.cbtnuggets.com/login")
logs = driver.get_log("performance")
def page_is_loaded(driver):
    return driver.find_element_by_tag_name("body") != None
#wait=ui.WebDriverWait(driver,300)
driver.implicitly_wait(10)
#wait.until(page_is_loaded)
USERNAME = driver.find_element_by_xpath('//*[@id="email"]')
USERNAME.send_keys("[email protected]")
PASSWORD = driver.find_element_by_xpath("/html/body/div[1]/div[2]/main/div/div[1]/form/fieldset/div[2]/input")
PASSWORD.send_keys("password")
Login_Button=driver.find_element_by_xpath("/html/body/div[1]/div[2]/main/div/div[1]/form/fieldset/button")
Login_Button.click()
driver.get("https://www.cbtnuggets.com/learn/it-training/playlist/nrn:playlist:user:5fcf88f463ebba00155acb18/2?autostart=1")


모두 예상대로 작동하지만 마지막 driver.get() 실행하면 로그인 페이지로 돌아가지만 주소 표시 줄에 두 번째 URL을 수동으로 입력하면 다시 로그인 할 필요없이 예상대로 작동합니다. 이것이 셀레늄 문제인지 또는 HTTP Get 작동 방식에 대해 오해하고 있는지 모르겠습니다.

  • 답변 # 1

    로그인 결과를 구문 분석해 보셨습니까? 이는 로그인 요청이 아직 완전히 처리되지 않았기 때문에 발생할 수 있습니다.

    Login_Button.click() 사이트가 성공적으로 로그인되었는지 확인해야합니다. 확인하는 방법에는 여러 가지가 있습니다.

    사이트가 리디렉션되는 경우 : 페이지 제목 확인

    사이트에 대화 상자가 표시되는 경우 : 대화 요소가 표시 될 때까지 유창하게 대기하여 확인하십시오.

    확인하는 것도 신경 쓰지 않는다면 time.sleep(5) . 그래도 나쁜 습관입니다.

    확인 후 이제 사용 driver.get 원하는 페이지로 이동합니다.

관련 자료

  • 이전 javascript - 경고 - 목록의 각 자식은 고유 한 키가 있더라도 고유 한 "키"소품을 가져야합니다
  • 다음 loops - 라인별로 txt 정보를 얻고 별도의 클래스에 대해 각 라인을 분할하는 방법