啊搜 2020-12-05 11:08 采纳率: 33.3%
浏览 196
已采纳

python用selenium打开网址显示whitelabel error page

我在写一个关于智慧树刷课的脚本

打开课程视频所在的链接会出现whitelabel error page

但是打开登陆的url不会出错

如何解决这个问题?

我本来想通过在登陆以后click()课程达到同样的目的

但是程序报错找不到标签

请问这是什么原因?我是新手,直接copy了课程title的xpath

	
from selenium import webdriver
import time
import re
import tkinter
from tkinter import messagebox
from selenium.webdriver.common.action_chains import ActionChains
 
 
 
# #在登陆界面需要填入的信息
# class task(url,school,account,pdw,max_lesson):
#     def __init__(self):
#         self.url=url#课程网址
#         self.school=school#学校
#         self.accout=account#账户
#         self.pdw=pdw#密码
#         self.max_lesson=max_lesson#最大课程数
#
#
# # #自动解决弹出问题
def window_tk():
    try:
        driver.find_element_by_xpath('//*[@id="app"]/div/div[7]/div[2]/div[1]/i').click()#关闭学前必读
    except:
        pass
    try:
        driver.find_element_by_class_name('el-dialog__headerbtn').click()#关闭智慧树警告
    except:
        pass
    try:
        anser=driver.find_element_by_xpath('//*[@id="app"]/div/div[7]/div/div[2]/div/div[1]/div/div/div[2]/div/p/span').text#回答问题
        options=driver.find_element_by_class_name('topic-item')
        for i in range(10):
            if char(ord('A')+i)==anser:
                options[i].click()
                pass
        driver.find_element_by_xpath('//*[@id="app"]/div/div[7]/div/div[3]/span/div').click()
        driver.find_element_by_xpath('//*[@id="playButton"]').click()
    except:
        pass
 
 
 
def auto_study(url,school,account,pwd,max_lesson):
    opt=webdriver.ChromeOptions()
    opt.add_experimental_option('useAutomationExtension', False)#关闭“chrome正受到自动测试软件的控制”
    opt.add_experimental_option('excludeSwitches', ['enable-automation'])
    opt.add_experimental_option('detach',True)#不自动关闭浏览器
    global driver
    driver=webdriver.Chrome(options=opt)
    try:
        driver.get(url)
    except:
        return -1#尝试打开网址
    time.sleep(2)
    driver.find_element_by_xpath('//*[@id="qStudentID"]').click()
    driver.find_element_by_xpath('//*[@id="quickSearch"]').send_keys(school)
    driver.find_element_by_xpath('//*[@id="schoolListCode"]/li[3]').click()
    driver.find_element_by_xpath('//*[@id="clCode"]').send_keys(account)
    driver.find_element_by_xpath('//*[@id="clPassword"]').send_keys(pwd)
    driver.find_element_by_xpath('//*[@id="f_sign_up"]/div[1]/span').click()
    time.sleep(2)
    # driver.find_element_by_xpath('//*[@id="sharingClassed"]/div[2]/ul/div/dl/dd/div/img').click()
 
    for time_slip in range(int(1e9)):
        window_tk()
        try:
            currenttime=driver.find_element_by_xpath('//*[@id="vjs_container"]/div[10]/div[4]/span[1]').text
            duration=driver.find_element_by_xpath('//*[@id="vjs_container"]/div[10]/div[4]/span[2]').text
            if currenttime==duration:
                try:
                    driver.find_element_by_xpath('//*[@id="nextBtn"]').click()
                    max_lesson-=1
                    if(max_lesson==0):
                        return
                except:
                    pass
        except:
            pass
auto_study('https://passport.zhihuishu.com/login?service=http%3A%2F%2Fstudyservice.zhihuishu.com%2Flogin%2Fgologin%3Ffromurl%3Dhttps%253A%252F%252Fstudyh5.zhihuishu.com%252FvideoStudy.html%2523%252FstudyVideo%253FrecruitAndCourseId%253D495b595e465241584c4c5b5f51','xx大学','2zzzzz70410','zzzzz725680','1')
 
 
  • 写回答

2条回答 默认 最新

  • 西门一刀 2020-12-06 12:15
    关注

    红框位置这句话元素定位找不到位置,所以程序报错,改成下方我写的这句就可以成功了,成功后的效果见下图

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同