python的Selenium基础
前言:今日写hackergame2023时需要使用 python selenium库故特此来学习
1.1 什么是Selenium
Selenium是python的一个库,作为一套web网站的程序自动化操作解决方案,可以帮我们自动干很多事情。比如
像人一样再浏览器里操纵web界面,比如点击界面,在文本框中输入文字等操作。
而且还能从web界面获取信息
Selenium的自动化原理如下
自动化程序(Selenium客户端库)将请求发送给由浏览器厂商提供的浏览器驱动,浏览器驱动接请求后将请求转变为
浏览器可识别操作,然后发送给浏览器,进行操作。浏览器发送给我们的信息也要先发送给浏览器驱动才能发送到
客户端
我们程序的自动化请求都是通过Selenium库的编程接口发送给浏览器,比如我们要模仿用户的点击操作,就会先
带哦用客户端库对应的函数,然后产生点击元素请求,之后发送给浏览器驱动,浏览器驱动再将其发送给浏览器
自动化程序发送给浏览器驱动的请求是HTTP请求
Selenium组织提供给多种编程语言Selenium客户端库,包括java,python,js,ruby等,方便不同编程语言的开发
者使用。
浏览器驱动则是由浏览器提供的不同的驱动程序,不同的浏览器有不同的浏览器驱动,起到将操作请求转发给浏览
器,再收到响应消息后将http响应转发个自动化程序的作用
自动化程序接受到响应后,将结果转化为数据对象,发送给我们的代码
1.2 前置工作
既然介绍了Selemium的工作原理,自然我们就明白了我们需要安装selenium库和浏览器引擎,由于浏览器引擎再
不同的浏览器都不一样,所以需要根据不同的浏览器进行下载,至于库的下载直接pip即可
如果成功进行了安装可以进行一下测试
from selenium import webdriver
driver = webdriver.Edge()
driver.get('https://www.bilibili.com/')
input("输入")
通过此方式在selenium库中导入webdriver模块
然后创建一个浏览器驱动对象,通过此对象的get方法来打开网页,由于执行完操作后会自动关闭网页,所以通过
加入intput输入来暂停网站的关闭
需要注意的是,浏览器驱动如果没有安装在python解释器根目录下是无法指向上述操作的
driver = webdriver.Edge(service=Service(r'你的浏览器驱动地址'))
需要这样创建浏览器驱动对象才可以
1.3 选择页面的元素
我们可以通过css的选择器来对页面的元素进行选择, 然后对此元素进行控制
例如
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Edge()
driver.get('https://www.baidu.com/')
element = driver.find_element(By.ID, 'kw')
element.send_keys('111\n')
input("aa")
第二行的from selenium.webdriver.common.by import By
用于引入By类
然后在后面通过id选择器选中了百度搜索的输入框,在搜索框传入了信息提交
注意,此处在传入给表单的信息是直接提交,并不是输入不提交,所以执行后是百度搜索了111的界面