无法在Scrapy中使用FormRequest填写登录表单

时间:2018-04-20 17:06:26

标签: python selenium scrapy

我使用Python Scrapy,并尝试连接到this site

我为这个问题创建了一个测试帐户

Email: g2387744@nwytg.com
password: 123456789

在身份验证期间监控网络时 enter image description here

我尝试使用FormRequest

填写表单
   data = {'loginName': 'g2387744@nwytg.com',
        'password' : '123456789',
        'rememberme' : 'true'
        }
    yield FormRequest("https://ecustomermw.colruytgroup.com/ecustomermw/v1/fr/customer/logon?client=cogo_cogo&variant=none" ,method="POST",formdata=data)

但我没有登录,我重定向到注册页面

我读了this answer,我尝试了Selenium

username = driver.find_element_by_id("loginName")
password = driver.find_element_by_id("password")

username.send_keys("g2387744@nwytg.com")
password.send_keys("123456789")

driver.find_elements_by_class_name("button.btn.large").click()

但我没有登录,我重定向到注册页面

我哪里错了?

1 个答案:

答案 0 :(得分:2)

你的Selenium代码几乎是正确的。问题是位于iframe内的身份验证表单应该切换到它以便能够处理输入:

driver.switch_to.frame(driver.find_element_by_css_selector('iframe._loadEvent'))
driver.find_element_by_id('loginName').send_keys('g2387744@nwytg.com')
driver.find_element_by_id('password').send_keys('123456789')
driver.find_element_by_css_selector('button[type="submit"]').click()