selenium模拟登录考拉海购网站

题目描述

使用selenium,webdriver 模拟登录,已经输入账号密码,滑动验证也操作成功了,但是还是Error,后台无报错。
前端截图-->
image.png
后台截图-->
image.png

题目来源及自己的思路

首次尝试使用selenium,想要测试一下模拟的账户登录,从输入账号、密码,滑动验证,都是获取到了元素正常执行的,我以为我没有家header,服务器拒绝了我的登录请求,添加了header后还是一样的结果,我注意到了html的error,与服务器之间的通讯失败,但是我不清楚为什么失败了

相关代码

粘贴代码文本(请勿用截图)

# -*- coding: utf-8 -*-
# @Author: Lingx99
# @Date:   2022-06-22 09:05:00
# @Last Modified by:   mac
# @Last Modified time: 2022-06-27 16:26:54

import requests
import sys
import io
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver import ActionChains
from selenium.webdriver.support.wait import WebDriverWait

options = webdriver.ChromeOptions()
options.add_argument('user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"')
browser = webdriver.Chrome(chrome_options=options)
wait=WebDriverWait(browser,10)



sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8') #改变标准输出的默认编码

# browser = webdriver.Chrome()
browser.implicitly_wait(10)
account={'user':'18968911111','password':'xxxxb666'}

class ServiceConfig():

    def prepareWork(self,url):
        browser.implicitly_wait(5)

        browser.find_element_by_class_name('agree-proto').click()
        browser.implicitly_wait(3)
        login_iframe = browser.find_element_by_id('alibaba-login-box')
        browser.switch_to.frame(login_iframe)

        browser.find_element_by_css_selector('i.iconfont.icon-sms').click()
        time.sleep(1)
        # account_model=browser.find_element_by_css_selector('a.password-login-tab-item')
        browser.find_element_by_css_selector('a.password-login-tab-item').click()
        browser.implicitly_wait(3)
        time.sleep(1)
        # 账号
        browser.find_element_by_id('fm-login-id').send_keys(account['user'])
        time.sleep(1)
        # 密码
        browser.find_element_by_id('fm-login-password').send_keys(account['password'])
        
        time.sleep(2)

        move_iframe = browser.find_element_by_id('baxia-dialog-content')
        browser.switch_to.frame(move_iframe)

        # 滑块 id:nc_1_n1z
        move_pan = browser.find_element_by_xpath('//*[@id="nc_1_n1z"]')
        # 调用ActionChains()类,并将浏览器驱动browser作为参数传入
        action_chains = ActionChains(browser)
        # 模拟拖拽,拖拽到某个坐标然后松开
        action_chains.drag_and_drop_by_offset(move_pan, 270, 0)
        # 执行ActionChains()中储存的所有操作,可以看做是执行之前一系列的操作
        action_chains.perform()
        # 滑框 id:nc_1__scale_text
        time.sleep(1)
        browser.switch_to.default_content()

        browser.switch_to.frame(login_iframe)
        login_button = browser.find_element_by_css_selector('button.fm-button')
        login_button.click()
        

        browser.implicitly_wait(3)


if __name__=='__main__':
    url = 'https://account.kaola.com/login.html'
    sc=ServiceConfig()
    sc.prepareWork(url)
    # browser.save_screenshot('./picture1.png')

# 打印网页源代码
# print(browser.page_source.encode('utf-8').decode())

# browser.quit()

你期待的结果是什么?实际看到的错误信息又是什么?

如何可以正常登录?

阅读 713
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏