今天我们学习下如何使用python编写web自动化,谈到web自动化,那么我们需要了解下市面上做web自动化的几种方式,Robotframework工具,网红WebUI自动化测试神器 - Cypress,以及我们今天所要学习的selenium,为什么使用selenium?上手快,开源免费,市面上使用率较高。
selenium的工作原理就是使用代码,驱动浏览器的驱动器,对浏览器的页面进行定位以及操作。首先我们先配置下使用前的环境:
1,python环境(之前课程有提到,可翻阅之前文章)
2, 下载浏览器驱动:https://npm.taobao.org/mirrors/chromedriver?spm=a2c6h.14029880.0.0.735975d7ddL0Xs(可在百度直接搜索:NPM镜像下载),下载完成之后放在所需python安装主目录下。
3, 安装selenium:打开电脑cmd终端,直接输入命令(pip install selenium)
注意:1,浏览器驱动要根据自身浏览器版本适配下载
2,驱动下载完成后,放在python安装主目录下面
3,浏览器目前市面上主要以谷歌浏览器与火狐浏览器,下载驱动时,注意不同的浏览器的驱动不同
配置完成后,我们可以在cmd电脑终端查看,安装是否正确,接下来我们以谷歌浏览器为例:
以上示例,我们先进入python环境下,导入selenium中的webdriver驱动,然后定义一个变量driver = webdriver.Chrome(),这个时候我们运行代码,如果发现浏览器被我们打开了,那么说明我们的环境已经配置完成,如果发现配置存在问题的同学可以参照如下示例:https://www.cnblogs.com/htybky/p/11747367.html
当以上环境配置完成后,我们可以先参照一个实例:
from selenium import webdriver #导入驱动from time import sleep #导入一个等待时间的包driver = webdriver.Chrome() #打开浏览器driver.get('https://www.baidu.com/')sleep(5) #等待5秒
以上代码运行结果我们可以看到,打开了谷歌浏览器,然后进入了百度页面。
selenium的原理是通过驱动对浏览器的页面进行操作,首先我们需要定位到也免得元素才能对页面元素进行,点击,输入等操作,那么我们先来了解下如何定位页面元素,这里涉及到前端html的简单知识。首先我们在浏览器中打开开发者工具F12,这里我们关注elements栏目,右边部分则对应这整个页面的html元素信息。
我们可以通过开发者工具的左上角的箭头,进行元素的查看。
如上我们根据上述步骤,查看百度输入框这一元素的html信息,开发者工具组则展示了类型为iuput,id的值为kw,name的值为wd,对于html只需进行一个最简单的了解即可。
那么接下来我们需要知道定位元素的8种方法:
1,Id
2,Name
3,Classname
4,Tagname
5,linkText
6,partialLinkText
7,Xpath
8,cssSelector
以上八种元素均可进行元素的定位,具体使用需根据实际html页面情况,目前用的比较多的是xpath方法。
接下来我们针对百度这个页面一一进行演示:
id,name定位方式:
from selenium import webdriver #导入驱动driver = webdriver.Chrome() #打开浏览器driver.get('https://www.baidu.com/')driver.find_element_by_name('wd').send_keys('零基础Python自动化') #输入内容driver.find_element_by_id('su').click() #点击搜索
首先我们可以看到定位元素使用的是find_element_by_的方法,然后采用id,name的方法定位到元素,send_keys()是针对输入框进行的输入操作,括号内的值只能是string类型,click()则是点击的操作,我们在百度输入框中输入'零基础Python自动化',然后点击搜索。
Classname定位:
仔细查看你会发现存在一个class='s_ipt',以下实例:
driver.find_element_by_class_name('s_ipt').send_keys('零基础Python自动化') #输入内容
tagName定位:
如果某个页面的元素此标签类型只有一个,那么我们也可以使用tagName进行定位:
driver.find_element_by_tag_name('input')
linkText定位:
linktext是指超链接文本定位,是某个文本具有超链接性质,可以通过此定位
"http://mp.weixin.qq.com/mp/homepage?__biz=MzI2MjY3OTU1Nw==&hid=2" class="gray" target="_blank">零基础Python自动化</a>
以上展示html元素,则linktext定位如下:
driver.find_element_by_link_text('零基础Python自动化')
partialLinkText定位:
模糊超链接文本定位,我们以上个超连接的html示例进行定位
driver.find_element_by_partial_link_text('零基础Python')
xpath定位:
接下来我们可以重点了解一下xpath定位元素,目前公司里的项目几乎都可以使用xpath进行定位,xpath可以使用绝对路径,也可以使用相对路径。
以上我们看到的就是选择xpath的定位方式,然后进行下面代码的编辑!
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('零基础Python自动化') #输入内容
css定位:
如上图我们既可以copy_xpath,也可以copy_selector
driver.find_element_by_css_selector('#kw')
以上的知识学会,我们就可以做一个简单的selenium自动化了。那么今天的学习先到这里,希望大家可以多看多练!
关注下方,学习更多知识!