微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐