【python应用】之selenium做自动化

这篇具有很好参考价值的文章主要介绍了【python应用】之selenium做自动化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

初学者怎么做一个简单的自动化脚本


提示:本篇基于selenium做的一个的脚本,由于我的技术比较有限,所以比较适合初学者学习:


初学python

大家好,我是一名大二的学生,由于暑假学习了python,只学python这些语法是非常枯燥的,学习python的一些库才能做出一些有趣的项目,所以就在b站上学习爬虫,学习的过程中发现selenium可以操作浏览器,就想实现自己帮我点击播放视频,实现自动化网课,抱着这样的目的去学习,最终实现了,结果没刷几个视频就给我封号了,啊哈哈哈哈哈,也就一周吧。但是这样的成就增加了我学习编程的兴趣。

一、selenium是什么?

Selenium是一个开源工具,用于自动执行在Web浏览器上执行的测试(可以使用任何Web浏览器进行Web应用程序的测试)。

二、前期准备

2.1 selenium的使用

安装selenium模块,就导入以下模块就可以了

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import EdgeOptions

以下代码就是创建浏览器对象,并实现反反爬,可以用起

#实现规避检测爬虫
option = EdgeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
driver = webdriver.Edge("./msedgedriver.exe", options=option)
#设置浏览器全屏化
driver.maximize_window()  #为什么实现浏览器全屏化咋后面再说

使用time.sleep需要导入 import time,为什么使用这个呢?
简单来说就是可能会因为网速的问题,该页面没加载,就开始点击浏览器某个元素,然而该元素又没有出现,就导致出现一些问题,所以用time.sleep来让程序停一下,在执行下一个程序。
driver.get(“里面填你要打开的网站”)

driver.get("")
time.sleep(1.2)

2.2 实现元素定位

学习八大元素定位可以去b站学习,,也可以看官方文档 Selenium-Python中文文档
我一般用xpath定位例如:
【python应用】之selenium做自动化,python,selenium,自动化#pic_center【python应用】之selenium做自动化,python,selenium,自动化#pic_center【python应用】之selenium做自动化,python,selenium,自动化

鼠标右键复制它的xpath路径
账号,密码,验证码同样如此

#send_keys是向这个框输入这个数据
driver.find_element(By.XPATH,'//*[@id="username"]').send_keys("2111030***")
driver.find_element(By.XPATH,'//*[@id="password"]').send_keys("a123****")

【python应用】之selenium做自动化,python,selenium,自动化

这个登录是需要点击的,点击的代码:

driver.find_element(By.XPATH,'//*[@id="loginForm"]/div/div[5]/div/input[2]').click()

浏览器中的元素要么是输入数据,要么是点击,这样就能让机器自动操作了
这里有一个验证码识别 的难题

2.3 解决识别验证码的问题

import ddddocr
#识别验证码
def code():
    ecr = ddddocr.DdddOcr()
    with open("code.png","rb") as f:
        img = f.read()
    result = ecr.classification(img)
    print("结果是:",result)
    return result
code()

这个模块能实现大部分数字字母验证码的识别,还是挺不错的,也可以选择网上的云打码平台,但是需要付费。

能实现验证码的识别,要想怎么把验证码保存成图片呢?
肯定不能手动保存,为什么呢?因为手动保存的验证码图片会改变,每一次刷新页面验证码图片都改变了,所以就要想其他方法。

2.4 把验证码图片保存下来

我了解到了一个方法就是把有验证码的那个网页截屏保存下来(这里最好设置浏览器全屏化,上面有提到,方便截图,截取验证码出来),selenuim就有一个方法可以截取整张页面,但还需要 把整张页面截屏的验证码那一块单独再截取出来

#保存整张界面的代码
 driver.save_screenshot("a.png")

截取局部验证码就需要以下代码
driver.find_element(By.XPATH,‘/html/body/div/div[2]/div[2]/div/form/div/div[3]/div[2]/span[2]/img’)这串代码的作用就是找到验证码的元素定位。
【python应用】之selenium做自动化,python,selenium,自动化

这里我讲一讲k值的作用,不调整k值的大小,你会发现验证码元素定位也定正确了,可就是截取不到验证码图片,这就跟你自己电脑的缩放比例有关系了,我的是125%,所以k值为1.25.,如果还有一点误差就自己调。
【python应用】之selenium做自动化,python,selenium,自动化

#确定验证码的坐标
code_png_lel = driver.find_element(By.XPATH,'/html/body/div/div[2]/div[2]/div/form/div/div[3]/div[2]/span[2]/img')
location = code_png_lel.location  #验证码左上的 x,y
size = code_png_lel.size  #宽度
print('location',location)
print(size)
k = 1.25
#图片左上角和右下角的xy坐标
rangle = (
    int(location['x'])*k, int(location['y'])*k, int(location['x']+size['width'])*k, int(location['y']+size['height'])*k
)
#验证码区域确定好了

整张页面保存下来后,截取验证码图片,导入from PIL import Image 这个

 #对全局页面进行截图获取局部验证码
i = Image.open('./a.png')   #打开的是那张拥有验证码的整张界面的图片
#按照给定xy坐标裁剪
code_image_name = "code.png"   #给这个验证码图片取一个名
frame = i.crop(rangle) #---》上面找到了验证码元素的位置,用来保存
frame.save(code_image_name)		#保存图片

以下图片就是从整张界面截取验证码图片的例子
【python应用】之selenium做自动化,python,selenium,自动化

截取成功验证码图片后就可以用 2.3解决验证识别问题解决验证码识别,然后把识别后的验证码driver.find_element(By.XPATH,“那个元素框”).send_keys(验证码)
这样就解决了验证码的问题,没有验证码更好解决

2.5 实现自动化

就以一个网站为例
【python应用】之selenium做自动化,python,selenium,自动化

【python应用】之selenium做自动化,python,selenium,自动化

就以第一节和第二节课为例看看他们的xpath
1–> //[@id=“wrapper”]/div[2]/div/div[1]/div[2]/div/div[2]/div[1]
2–>//
[@id=“wrapper”]/div[2]/div/div[1]/div[2]/div/div[2]/div[2]
发现他们就后面那个div中的数字不一样,并且对应着节数,利用这个特性不就可以定位元素进行点击,利用一个for循环来做。

for i in range(12,15):  #这边的数字就对应的你要刷哪一节课,就点击那一节
    try:
        driver.find_element(By.XPATH,'//*[@id="wrapper"]/div[2]/div/div[1]/div[2]/div/div[2]/div[{}]/a'.format(i)).click()
        time.sleep(1)
        driver.find_element(By.XPATH,'//*[@id="videoContent"]/div/div[9]/canvas').click()
        time.sleep(2.3)
        driver.find_element(By.XPATH,'//*[@id="layui-layer1"]/div[2]/div/div[2]/input[2]').send_keys(sava_img1())
        driver.find_element(By.XPATH,'//*[@id="layui-layer1"]/div[3]/a[1]').click()
    except:
        time.sleep(1)
        driver.find_element(By.XPATH, '//*[@id="videoContent"]/div/div[9]/canvas').click()
        time.sleep(1)
    if i==12:
        time.sleep(60*20)
    elif i==12:
        time.sleep(60*22)
    elif i==13:
        time.sleep(60*22)
    elif i==14:
        time.sleep(60*20)

这里我说一下为什么加异常处理,这是因为刷课的时候需要输入验证码,但是也可能有几节不需要输入验证码,不加异常处理 ,它找不到这个元素,那么这个程序不就报错了嘛,如果没有出现这个验证码元素就执行except中的代码,就进行简单的点击就行了

加time.sleep的原因是因为每一节课都有播放时间 ,肯定要等他们播放。完了,再点击下一节课呀

三.总结

这就是一个简单的脚本,学会了可以做一些简单的脚本,来提高自己的学习兴趣,但是这个还有很多的不足。文章来源地址https://www.toymoban.com/news/detail-823290.html

到了这里,关于【python应用】之selenium做自动化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【自动化测试】基于Selenium + Python的web自动化框架

    【自动化测试】基于Selenium + Python的web自动化框架

    Selenium是一个基于浏览器的自动化工具,她提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid:  1、Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如java,p

    2024年02月07日
    浏览(13)
  • Python自动化实战之使用Selenium进行Web自动化详解

    Python自动化实战之使用Selenium进行Web自动化详解

    为了完成一项重复的任务,你需要在网站上进行大量的点击和操作,每次都要浪费大量的时间和精力。Python的Selenium库就可以自动化完成这些任务。 在本篇文章中,我们将会介绍如何使用Python的Selenium库进行Web自动化,以及如何将它应用于实际项目中。如果你是一名Python爱好

    2024年02月13日
    浏览(17)
  • 如何使用Python自动化测试工具Selenium进行网页自动化?

    如何使用Python自动化测试工具Selenium进行网页自动化?

    Selenium 是一个流行的Web自动化测试框架, 它支持多种编程语言和浏览器,并提供了丰富的API和工具来模拟用户在浏览器中的行为 。 Selenium可以通过代码驱动浏览器自动化测试流程,包括页面导航、元素查找、数据填充、点击操作等。 与PyAutoGUI和AutoIt相比, Selenium更适合于处

    2023年04月09日
    浏览(57)
  • Python + Selenium自动化测试

    Python + Selenium自动化测试

    一、python 1、python下载与安装 官方下载地址: Python Releases for Windows | Python.org https://www.python.org/downloads/windows/ 下载应用程序,双击运行 选择install now进行安装,下方勾选第二个选项系统可自动添加环境变量   等待python安装  安装完成后,点击“Close”关闭 进入cmd验证是否已完

    2023年04月24日
    浏览(7)
  • python学习-自动化测试Selenium

     自动化测试Selenium Selenium简介 第一个Selenium应用 Selenium Python API Selenium WebDriver Selenium 初始化浏览器 Selenium导航到URL Selenium定位元素 Selenium By类 Selenium WebElement类 Selenium页面交互 Selenium ActionChains Selenium鼠标操作 Selenium键盘操作 Selenium调用JavaScript Selenium等待机制 Selenium expected

    2024年01月18日
    浏览(16)
  • 自学Python+Selenium自动化测试

            俗话说的好,书读百遍不如手过一遍,而编程这东西是看书看视频一万遍都不如你自己多敲代码、写脑图、总结分享转换成自己的内容来的实在。         今天我就把最近学的(二) Selenium核心WebDriver API 简单总结一下,方便自己以后找出来看看。         一

    2024年02月05日
    浏览(11)
  • python爬虫(七)--------selenium自动化

    查找方法(python3.7之前版本) find_element_by_id 根据id属性来定位 find_element_by_name 根据name元素来定位 find_element_by_xpath 根据xpath语法来定位 find_element_by_tag_name 根据标签名来定位 find_element_by_class_name 根据class的名字来定位 find_element_by_css_selector 根据css选择器来定位 以下两种方法都

    2024年01月16日
    浏览(19)
  • Python + selenium 自动化测试框架

    Python + selenium 自动化测试框架

    项目自动化测试框架设计为4层 1.基础层(通用层) 基础层: 将通用,重复性比较高的代码封装到这里。 写通用的代码的。 其他3层想要的话,就可以直接调用。 例如: 读取测试数据的代码,读取配置信息的代码;截图的代码的,定位元素的代码等等 2.功能层(页面层) 功

    2023年04月13日
    浏览(9)
  • python selenium 自动化登录页面

    2024年02月10日
    浏览(18)
  • Python Selenium 自动化的笔记

            大部分URL都是https开头,但是遇到http开头的URL的时候,浏览器很可能会把http自动识别成https,导致无法进入正确的URL。使用driver.get()就会经常遇到这种情况,遇到这种情况我使用的方式是让uiautomation输入一遍完整的URL,避免浏览器或者driver.get()函数自动补全http为ht

    2024年02月04日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包