• selenium实际使用


    1. 自动观看视频
    
    from builtins import print
    
    import time
    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    
    # 打开网页
    browser = webdriver.Chrome()
    browser.get('http://xxx/')
    
    # 手动登陆
    for i in range(30):
        print('\r%d'%(30-i), end='', flush=True)
        time.sleep(1)
    print()
    
    
    # 切换到新的窗口
    handles = browser.window_handles
    browser.switch_to.window(handles[-1])
    
    
    now = lambda: time.time()
    start = now()
    reverse = True
    
    while True:
        # 视频列表
        # video_list =  browser.find_elements_by_class_name("f-ib w100 text-etc") # class复合属性不支持这么写
        # video_list = browser.find_elements_by_css_selector(".f-ib .w100 .text-etc")  # css中间也不能写空格的
        video_list = browser.find_elements_by_css_selector(".f-ib.w100.text-etc")  # css 支持找类class
        # 解决点击第一个a之后,页面出现刷新,再想点第二个就会报错
        video_num = len(video_list)
    
        if video_list:
            print('找到播放列表')
            for i in range(video_num):
                video_id = video_num-1-i if reverse else i
                video = browser.find_elements_by_css_selector(".f-ib.w100.text-etc")[video_id]
                #选择播放列表中的视频
                video.click()
                print('选择播放')
    
                # 视频播放按钮
                play_button = browser.find_element_by_css_selector(".vjs-big-play-button")
                # time.sleep(2)
                # play_button.click()
                is_visible = WebDriverWait(browser, 6).until(lambda driver: play_button.is_displayed())
                if is_visible:
                    play_button.click()
                    print('开始播放')
    
                # 等待视频结束按钮
                end_button = None
                # waite_50 = False
                start_time = now()
    
                while not end_button :
                    try:
                        end_button = browser.find_element_by_css_selector(".btn.btn-primary:not(.btnSubmitQuestion)")
                    except:
                        time.sleep(30)
                        print("视频没有结束,等待30s")
                        # 可能视频看完不会跳出弹框,50分钟后直接下一个视频
                        if int(now() - start_time) > 60*50:
                            break
                        else:
                            continue
                    else:
                        print("视频结束,退出循环")
                        time.sleep(10)
                        # 点击结束弹框
                        end_button.click()
    
            #遍历完播放列表就退出
            break
    
        else:
            if int(now() - start) < 60:
                time.sleep(10)
            # 一分钟没有找到视频列表,直接退出
            break
    
    
  • 相关阅读:
    nRF5 SDK for Mesh(二) Getting started 快速开始
    QT 简单 TCP 通信,发送数据到服务器
    Bluetooth® Low Energy Beacons
    CC2540 低功耗串口, POWER_SAVING 模式 下 串口 0 的使用
    LWIP network interface 网卡 初始化 以 STM32 为例子 后面会有 用 2G 或者4G 模块 用 PPP拨号的 形式 虚拟出网卡 所以先以 这个为 前提
    R 语言入门
    Django 框架
    Windows 下 Django 安装
    windows 下搭建 git 服务器 copssh+git
    python Pystaller 将python文件打包成exe
  • 原文地址:https://www.cnblogs.com/amize/p/14425637.html
Copyright © 2020-2023  润新知