whisky- 2022-05-11 16:59 采纳率: 71.4%
浏览 145
已结题

滑块验证显示查找不到滑块元素

###### 问题遇到的现象和发生背景 
滑块验证总是说滑块元素查找不到 不知道是为什么

###### 问题相关代码,请勿粘贴截图 
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
import time

#创建谷歌浏览器操作对象
path = 'chromedriver.exe'
driver = webdriver.Chrome(path)

# 这是登陆页面的url地址
url = 'https://login.taobao.com/member/login.jhtml?spm=a21bo.jianhua.754894437.1.5af911d9fe3dHP&f=top&redirectURL=https%3A%2F%2Fwww.taobao.com%2F'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}
cookies = 't=2de9399f572cbaac83dea679890bfe6f; _bl_uid=Lbld00q4oX10gF195j06fnFfIzzs; _m_h5_tk=86de938f16366037f99fa94a3f092d5f_1651046569898; _m_h5_tk_enc=0ebdbd588371a9146d6b3af126ef7bd5; XSRF-TOKEN=030dbccf-5f5f-4c8b-995b-2e9bfd9a11df; _samesite_flag_=true; cookie2=1ed0c46602ee18b9d4f7caead9c7fd6f; _tb_token_=e613a5edbb8e; xlly_s=1; sgcookie=E100BBC2DA1NqmvzdzAv7nR0AJ0UWMBhke9oD40wJ/5MOaK3cG1597/19NyR+WvsHaDbvnICIEWgyDVZ8DsGEDN16xc5Y0hbRkObcfTGiUGMdJiemyG9+JDG0+xtXx15iIug; thw=cn; mt=ci=0_0; tracknick=; cna=SqmzGoLQCWQCAd9JcbSbctl0; l=eBjQXvKgLrgufbvjBO5Cnurza7PEuCOXGKVzaNbMiInca6Ch13hB-NC3XNyXRdtYgt5j5LtyhayveRFe-7zU-x1Hrt7APlUOrvJwRe1..; isg=BMzMnw0lwnfwRdbPbTcEHOF_nSr-BXCv3s67sCaIwHcHsWC7ZhRxPmJHUPks16gH; tfstk=cQrlB7Yxjzu5tlu05gi5A7Dd8mCOaCLINDou0T2UWlKKhBUrUsDHuFSFFKcf1_8C.'
line = cookies.split(';')
cookies ={}
for i in line:
    key,value = i.split('=',1)
    cookies[key] = value
# 获取页面的源码
response = requests.get(url = url,headers = headers,cookies = cookies)
content = response.text
soup = BeautifulSoup(content,'lxml')

driver.get(url)
# 获取文本框的对象
ID = driver.find_element(By.ID,'fm-login-id')
KEY = driver.find_element(By.ID,'fm-login-password')
# 在文本框中输入用户名及密码
ID.send_keys('xxxxxx')
time.sleep(2)
KEY.send_keys('xxxxxx')
time.sleep(2)
#获取登录按钮对象并点击
button = driver.find_element(By.XPATH,value='//*[@id="login-form"]/div[4]/button')
button.click()
time.sleep(3)

#设置等待
wait = WebDriverWait(driver,3,0.5)
#使用匿名函数
wait.until(lambda diver:driver.find_element(By.ID,'nc_1_n1z'))
print('找到滑块了!')

#获取查询滑块对象
huakuai = driver.find_element(By.ID,'nc_1_n1z')
#将滑块拖动到另一位置
actions = ActionChains(driver)    #拿到动作链对象
actions.move_to_element(huakuai).perform()
actions.click_and_hold(huakuai).perform()   #在元素huakuai位置左键单击并保持
#time.sleep(1)
actions.move_by_offset(675,0).perform()     #x为移动水平距离,y为移动垂直距离,正负代表左右或者上下
actions.release().perform()     #松开

print('登录成功!')

###### 运行结果及报错内容 
Traceback (most recent call last):
  File "D:\pycharm\pythonProject\实验报告二\模拟登录taobao.py", line 63, in <module>
    actions.move_to_element(huakuai).perform()
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable: [object HTMLSpanElement] has no size and location
  (Session info: chrome=101.0.4951.54)
  • 写回答

1条回答 默认 最新

  • ritalee11 2022-05-11 17:08
    关注

    滑块在另外一个 iframe 里面,需要 切换 iframe 才能定位 里面的滑块,参考 https://blog.csdn.net/kikkc/article/details/108003595
    有用望采纳哦

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月23日
  • 已采纳回答 5月15日
  • 修改了问题 5月11日
  • 创建了问题 5月11日

悬赏问题

  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系