Я не уверен, почему селен не отправляет запрос на отправку.
edx.py или Coursera
from selenium import webdriver browser = webdriver.Chrome() browser.get('https://courses.edx.org/login') email = browser.find_element_by_id('login-email') email.send_keys('xxxxx@gmail.com') pwd = browser.find_element_by_id('login-password') pwd.send_keys('password') login_attempt = browser.find_element_by_xpath('//*[@id="login"]/button') login_attempt.submit()
try login_attempt.click()
login_attempt.click()
Ваша форма не имеет атрибута action, поэтому form.submit() не будет знать пункт назначения для отправки.
action
form.submit()
Поэтому в целях безопасности рекомендуем найти кнопку и нажать на нее.Вместо того, чтобы использовать удобный API: element.submit().
element.submit()
В соответствии с вашими испытаниями кода для заполнения поля Email и Password и click() on Кнопка входа должна вызывать WebDriverWait для элементов , которые можно нажимать , и вы можете использовать следующий блок кода:
click()
Блок кода:
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 options = webdriver.ChromeOptions() options.add_argument("start-maximized") options.add_argument('disable-infobars') driver=webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe') driver.get("https://courses.edx.org/login") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.input-block#login-email"))).send_keys("Sakim@gmail.com") driver.find_element_by_css_selector("input.input-block#login-password").send_keys("Sakim") driver.find_element_by_css_selector("button.action.action-primary.action-update.js-login.login-button").click()
Снимок браузера:
Вы можете попробовать использовать ниже CSS Selector
action.action-primary.action-update.js-login.login-button
Обновление
Только что заметил, что в вашей реализации отсутствует точка (.)
browser.find_element_by_xpath('.//*[@id='login']/button')