Как войти / отправить запрос через Selenium и Python - PullRequest
0 голосов
/ 01 июня 2018

Я не уверен, почему селен не отправляет запрос на отправку.

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()

Ответы [ 3 ]

0 голосов
/ 01 июня 2018

try login_attempt.click()

enter image description here

Ваша форма не имеет атрибута action, поэтому form.submit() не будет знать пункт назначения для отправки.

Поэтому в целях безопасности рекомендуем найти кнопку и нажать на нее.Вместо того, чтобы использовать удобный API: element.submit().

0 голосов
/ 01 июня 2018

В соответствии с вашими испытаниями кода для заполнения поля Email и Password и click() on Кнопка входа должна вызывать 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
    
    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()
    
  • Снимок браузера:

courses_edx_org

0 голосов
/ 01 июня 2018

Вы можете попробовать использовать ниже CSS Selector

action.action-primary.action-update.js-login.login-button

Обновление

Только что заметил, что в вашей реализации отсутствует точка (.)

browser.find_element_by_xpath('.//*[@id='login']/button')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...