Не загружается целевая страница - Selenium Web Form Automation
Создание сценария, который будет входить на сайт ниже и автоматически регистрировать значения в веб-форме. Проблема в том, что после входа в систему целевая страница пуста (т.е. загружает заголовки, но это все). Мой код ниже:
profile = webdriver.FirefoxProfile()
profile.accept_untrusted_certs = True
browser = webdriver.Firefox(profile)
browser.get('https://cmsdb.darkcosmos.org/experiments/run/new')
print('Connected to Server')
time.sleep(2) # Wait for page to load
login_button = browser.find_element_by_xpath('/html/body/div/div[5]/main/div/div[1]/div/div[3]/button')
login_button.click()
time.sleep(2) # Wait for pop-out to load
browser.find_element_by_xpath('//*[@id="username"]').send_keys(username)
browser.find_element_by_xpath('//*[@id="password"]').send_keys(password)
login_attempt = browser.find_element_by_xpath('/html/body/div/div[4]/div/div/div/div/div/form/button[1]')
login_attempt.submit()
print('Logged In')
time.sleep(2) # Wait for new page to load
browser.find_element_by_xpath('//*[@id="title"]').send_keys('Title') # Code breaks here. It cannot find the title entry area because the new page is blank.
Я пытался создать профиль Firefox, дать странице время для загрузки и отключить сертификаты. Он загружается очень хорошо, когда я вручную войти. Заранее спасибо за помощь!
1 ответ
Чтобы войти в URL https://cmsdb.darkcosmos.org/experiments/run/new
и предоставьте имя пользователя и пароль, используя новый FirefoxProfile, который вам нужен, чтобы вызвать WebDriverWait для того, чтобы нужные элементы были кликабельными, и вы можете использовать следующее решение:
Блок кода:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC profile = webdriver.FirefoxProfile() profile.accept_untrusted_certs = True browser = webdriver.Firefox(firefox_profile=profile, executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe') browser.get('https://cmsdb.darkcosmos.org/experiments/run/new') print('Connected to Server') login_button = browser.find_element_by_xpath('/html/body/div/div[5]/main/div/div[1]/div/div[3]/button') WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.v-content__wrap button.v-btn.v-btn--flat.theme--light.primary--text"))).click() WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#username"))).send_keys("clcarver") browser.find_element_by_css_selector("input#password").send_keys("clcarver") login_attempt = browser.find_element_by_css_selector("div.v-btn__content>i.v-icon.pr-1.mdi.mdi-lock-open-outline.theme--light").click()
Консольный вывод:
Connected to Server
Скриншот браузера: