博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【python实战系列】让别人替你操作浏览器-selenium(八)
阅读量:2055 次
发布时间:2019-04-28

本文共 2091 字,大约阅读时间需要 6 分钟。

 

日常生活中,我们无时无刻都在访问浏览器,有时用它来看看新闻;有时用它来查查资料,还可以用它看视频等等。浏览器的功能无比广泛,几乎我们想要的很多东西,都可以在浏览器上找到。

    

    我们很多时候都会用到浏览器,且很多人会用它来做很多重复而又无聊的事情,例如,每天在浏览器上打个卡,或者签个到什么的。极其无聊,但每天又不得不重复。

    各位是不是在想我是不是这次要将怎么让自己每天自动签到?想多了,我也觉得很无聊~。不过我用的这个工具Selenium却可以做到这些。让它来代替我们进行操作。

那Selenium是什么呢?

    Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。

主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好地工作在不同浏览器和操作系统之上。

    接下来我们就来实践一下,首先我们进行一下准备工作。先下载对应版本的Chrome浏览器驱动:

https://www.cnblogs.com/lizm166/p/9983377.html,下载完了之后,将其复制到python程序的启动目录下:

     这样准备工作就做好了,你以为现在就要开始操作了?不,现在才刚刚开始,我们先玩个小小的游戏:http://www.sorpack.com/dv_plus/game/csgaoshou.htm

 

 

我们先正常操作一把

游戏规则就是30秒内点击小黑点,点中分数+1,点到其他的分数-1,我刚试了一把,结果极其惨烈。

    是不是觉得一般人根本不可能达到很高的分数,但是我说的只是一般人,不排除手速快的那些大佬。接下来我们就来使用Selenium工具来代替我们操作一下:

    首先我们老规矩,先审查审查元素。游戏嘛,总要先点开始才能进行嘛,所以我们第一步是需要先模拟点击开始按钮。

找到了开始的按钮,我们就先使用程序打开这个网页,然后找到这个按钮,点击它。

from selenium import webdriverbrower = webdriver.Chrome()brower.get("http://www.sorpack.com/dv_plus/game/csgaoshou.htm")startStopBtn = brower.find_element_by_name("startstop")startStopBtn.click()

    这样,第一步就完成了,接下来就是重点,我们要点击下面的黑点,那么怎么才能找到这些黑点呢?我们再次审查元素分析一下它。

通过审查元素我们发现,这些黑点是由很多个单选框组成,选中状态即代表我们看到的小黑点。也就是说,我们只需判断单元框是否被选中,如果选中了,我们再对其进行点击就行了。

那么第二步的步骤如下:先遍历所有单选框找到被选中的单选框,然后再点击它

radioBoxs = brower.find_elements_by_xpath("//input[@type='radio']")while True:    for radioBox in radioBoxs:        if radioBox.is_selected():            radioBox.click()

 

贴上完整代码,我们来运行一下,看看效果:

from selenium import webdriverbrower = webdriver.Chrome()brower.get("http://www.sorpack.com/dv_plus/game/csgaoshou.htm")try:    startStopBtn = brower.find_element_by_name("startstop")    startStopBtn.click()    radioBoxs = brower.find_elements_by_xpath("//input[@type='radio']")    while True:        for radioBox in radioBoxs:            if radioBox.is_selected():                radioBox.click()        timeValue = brower.find_element_by_name("timeleft").get_attribute("value")        print(timeValue)        if int(timeValue) == 1:            print("exit")            breakfinally:    print("结束")

 

 

效果:

 

 

喜欢本文的话,可以关注一下公众号,每天定时更新一篇python学习日记,让我们一起成长!

你可能感兴趣的文章
阿里云《云原生》公开课笔记 第八章 应用配置管理
查看>>
阿里云《云原生》公开课笔记 第九章 应用存储和持久化数据卷:核心知识
查看>>
linux系统 阿里云源
查看>>
国内外helm源记录
查看>>
牛客网题目1:最大数
查看>>
散落人间知识点记录one
查看>>
Leetcode C++ 随手刷 547.朋友圈
查看>>
手抄笔记:深入理解linux内核-1
查看>>
内存堆与栈
查看>>
Leetcode C++《每日一题》20200621 124.二叉树的最大路径和
查看>>
Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配
查看>>
Leetcode C++《每日一题》20200625 139. 单词拆分
查看>>
Leetcode C++《每日一题》20200626 338. 比特位计数
查看>>
Leetcode C++ 《拓扑排序-1》20200626 207.课程表
查看>>
Go语言学习Part1:包、变量和函数
查看>>
Go语言学习Part2:流程控制语句:for、if、else、switch 和 defer
查看>>
Go语言学习Part3:struct、slice和映射
查看>>
Go语言学习Part4-1:方法和接口
查看>>
Leetcode Go 《精选TOP面试题》20200628 69.x的平方根
查看>>
Leetcode C++ 剑指 Offer 09. 用两个栈实现队列
查看>>