题目描述
使用selenium,webdriver 模拟登录,已经输入账号密码,滑动验证也操作成功了,但是还是Error,后台无报错。
前端截图-->
后台截图-->
题目来源及自己的思路
首次尝试使用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()
你期待的结果是什么?实际看到的错误信息又是什么?
如何可以正常登录?