基于selenium实现课程章节自动化闯关

1:引用

        近期培训机构开通了一门大数据的培训课程,由于本人具有一些大数据的基础,因此前面的基础课程可以选择跳过,直接学习核心的项目课程。

        但是课程设置了闯关模式,只有前面的章节学习完之后,才能进行下一步的学习,实属无奈,想起曾经基于Python语言采用selenium实现过自动化机器人测试。

        于是就动作开始....

2:课程大纲 

3:页面结构分析

1:章节分析

        通过元素查看,可以看到每个章节的主体都有id,可以考虑使用id选择器

2:小节分析

        点开大的章节,其中每一个小节,有css属性  ivu-timeline-item-content,因此考虑css选择器

 3:小节内容

        经过观察,每小节的内容中有“作业”,“资料”是不需要点开的,当然如果想要继续做的更完善,可以再实现自动提交作业,以及下载资料文件。 

4:选择器

        上面进行分析,只需要采用id选择器与css选择器即可。

1:find_element_by_id

        element=driver.find_element_by_id(‘element_id’)

        WebDriver提供的id定位方法就是通过元素的id属性来查找元素。上面的语句就是用于定位页面上id=element_id的元素

        注意:只会返回一个元素

2:find_elements_by_class_name

        elements = cd.find_elements_by_class_name('col')

        上面的语句是通过class来定位元素,即 class="col"的元素

        注意:会返回一个或者多个元素的集合

5:源码

        废话不多说,直接上源码        

#MicroHuang 20210711
from selenium import webdriver
import time
import sys

#课程的url地址
CourseUrl="https://learn.kaikeba.com/catalog/214065?type=1"
#每一章标签的Id
ListSectionId=[213136,213138,213139,213140,213145,213146,213147,213148,213149,213150,213151,213152,213153,213154,213155,213192,213193,213194,213195]
#每章下对应的小节开始的索引值
ListIndexSection=[0,7,70,139,278,371,419,506,560,615,644,676,709,758,809,842,856,916,916,916]
#某一章下的小节对应的classname
class_name="ivu-timeline-item-content"; 

#配置chrome浏览器驱动
driver=webdriver.Chrome()
driver.implicitly_wait(10)
#全屏浏览器窗口
driver.maximize_window()
#输入地址跳转
driver.get(CourseUrl)

#停顿10s
time.sleep(10)

lenSection=len(ListSectionId)

for j in range(lenSection):
    itemSection=ListSectionId[j]; 
    #点击展开某个章节
    driver.find_element_by_id(str(itemSection)).click();
    time.sleep(5)
    #获取某个章节下的所有小节内容,此处采用的是class选择器
    elements=driver.find_elements_by_class_name(class_name) 

    lenelements=len(elements)
    k=0;
    for i in range(ListIndexSection[j],lenelements,1):
        elements=driver.find_elements_by_class_name(class_name)       
        if(i==ListIndexSection[j]+k): 
            strtext=elements[i].text
            flag1="资料" in strtext
            flag2="作业" in strtext
            #只点击视频,资料或者作业的直接跳过
            if(flag1==False|flag2==False):
                elements[i].click()
                time.sleep(10)
                driver.back()
                time.sleep(10)
            k=k+1
    strtext=""

6:执行效果与结果

如下图所示,现在已经可以看大数据中的内容了。        

7:扩展学习

selenium常用选择器方法

1:通过id 查找

find_element_by_id()

2:通过class name 和 name 查找

find_element_by_name() 

find_element_by_class_name()

根据name元素和class的名字进行定位,这两种定位方式和id定位相似,在前端代码中,id、name和class一般都至少会有其中的一种

3:通过xpth 查找

find_element_by_xpath()

xpath是XML路径语言,它可以用来确定xml文档中的元素位置,通过元素的路径来完成对元素的查找。HTML就是XML的一种实现方式,所以xpath是一种非常强大的定位方式。

4: 通过tag_name查找

find_element_by_tag_name ()

通过标签名去定位的方式一般是这样的:find_element_by_tag_name("input") 

可见仅仅通过标签名去定位时,一般一种标签在一个页面里面会出现不止一次甚至大量出现,这种定位方式的作用不是很大,所以用的也就比较少。

5:通过链接定位查询

这两种定位方式是专门用于定位超链接的

find_element_by_link_text()

find_element_by_partial_link_text()

这两种定位方式是专门用于定位超链接的,也就是对应html页面中的<a>标签,括号里传的值就是a标签中的超链接文字,两者的区别在于一个是完整的超链接文字,一个是可以只写部分超链接文字。

6:通过CSS属性定位

find_element_by_css_selector() 

CSS属性定位可以比较灵活地选择控件的任意属性,定位方式也会比xpath快。

8:说明

        本文主要是对自己自动化测试的一个小的总结与练手,真正的知识还是要一步步的循序渐进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不要迷恋发哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值