python代码学习——web自动化的基础

web页面的组成

  • 常用:HTML+CSS+JavaScript
  • HTML:定义页面呈现的内容
  • CSS:Cascading Style Sheet :控制页面如何呈现,即局设置;比如字体大小,字体颜色,在页面的呈现的大小等
  • JavaScript:若希望网页根据不同的情形做出不同的事情,即可使用此种语言

HTML的定义

  • HTML是超文本标记语言,他和python不一样,并不是编程语言,而是一种标记语言。其作用是用来描述网页的内容
  • 查看方式:F12——Element查看
  • 内容、图片、标签、文本等等都会有
  • 一定不能少、固定的三组标签对:<html>...</html><head>...</head><body>...</body>,内容必须存在这里面
    • 网页中所有的内容都呈现在body中
    • head中只放网页的请求、说明和属性
    • head中必须要知道的属性是title,即<title>...</title>,代表网页的标题,显示在网页最上面的页签
  • pycharm创建html文件,会自带一些标签

HTML的吧标签

  • HTML的标签也可以成为元素,其特点有:
    • HTML标签是由尖括号包围起来的关键词,例如
    • HTML标签通常是成堆出现的,例如和
    • 标签对中的第一个标签是开始标签,第二个标签是结束标签
  • 以下是常见的HTML标签名
  • <input>...</input>中可以存在属性
  • type=“text”text代表文本输入框,radio,代表单选按钮,单选框添加多个的时候,如果需要判断单选按钮是同一类,要起一样的名称;
  • button代表按钮,
  • checkbox代表复选框;
  • file代表文件上传框
  • 换行标签为<br/>
  • img 代表图片,使用必备属性src=“图片路径”即可添加图片
  • iframe:iframe本身是当前界面的属性,但是他里面放的元素,不是本界面的元素
  • selectoption 下拉列表,两者成对出现,不会只出现一个,option为select的选项
  • div,块的意思,里面可以放置某一块的属性,例如:颜色,控件之间的间隔等等
  • boday中可以存在多个input
  • a:是一个链接,可设置style样式。

HTML元素

  • HTML文档是由HTML元素定义的
  • HTML元素值得是从开始标签到结束标签之间的所有代码,通常和HTML标签表达一个意思
  • HTML中的属性是标签的配置信息
  • 大多数HTML元素都拥有属性,常见的属性有:
  • id=“myId”,代表元素的id
  • name="my_name",代表元素的名字,所有属性中只有id是唯一的
  • class:在不同的div中,选择一部分的模块,做同样的样式,即可在标签对中增加class属性,只要class的名称一致即可
  • style有一个属性:display:block代表元素的显示,即页面能否看得到元素;display:none代表元素不显示,即页面看不到;visibility:vusible代表可见
  • 页面的元素存在三种状态:元素存在、元素可见、元素可用(例如:按钮置灰不能点))
    • readonly不可用,disabled也不可用
  • 代码示例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>我的网页</title>
</head>
<body>
<input type="radio" name="movie" checked></br>
头像:
<input type="file">
</br>
住址:
<select>
    <option>请选择</option>
    <option>北京</option>
    <option>天津</option>
    <option>河南</option>
    <option>河北</option>
</select><select>
    <option>请选择</option>
    <option>北京</option>
    <option>天津</option>
    <option>郑州</option>
    <option>石家庄</option>
</select></br>
爱好:
<input type="checkbox" >篮球
<input type="checkbox" >足球
<input type="checkbox" >看书
</br>
备注信息:
<textarea name="reworkmes"   cols="40"   rows="4"   style="OVERFLOW:   hidden"></textarea>
</br>
<button>提交</button>
<button>重置</button>
<input type="reset" value="重置">
<image src = "https://img-home.csdnimg.cn/images/20201124032511.png"></image>
</br>
<iframe src="https://www.baidu.com"></iframe>
</br>
<a style="color:red">百度一下,你就知道</a>
</body>
</html>
</body>
</html>

运行结果截图:
在这里插入图片描述

selenium

  • selenium是用于webnn应用自动化测试工具,开源且免费
  • 其支持Chrome、FireFox、Edge、IE、Safari等主流的浏览器
  • 支持java,python等编程语言进行自动化脚本的编写
  • selenium主要由三大组建组成
    • selenium IDE,这个是Firefox和Chrome浏览器的扩展插件,通过selenium IDE可以录制和回放浏览器操作,快速实现自动化测试
    • Selenium Webdriver,这个是selenium的核心,提供了各种语言环境的API支持更多控制权和编写符合标准软件开发实践的应用程序
    • selenium Grid,分布式测试,通过selenium Grid可以讲自动化的脚本分发到不同的测试机中去执行

selenium IDE

  • selenium IDE虽然在Chrome中可以找到,但是因为国内访问不了Chrome的应用商店,因此在Chrome中不能使用,只能在FireFox中使用
  • 使用步骤:
    • 使用firefox打开selenium的官网
    • 然后点击界面上的selenium IDE的按钮
    • 后续操作步骤如下图
      在这里插入图片描述
    • 添加成功之后,会出现以下界面
      在这里插入图片描述
    • 我们可以在一个新的项目中录制新的脚本,设置项目的名称,点击OK
    • 然后设置项目的base url(项目的访问地址,或者你希望测试的网址)
    • 然后点击左侧的“开始录制”按钮
    • selenium会自动打开网址,并在页面右下角会出现一个正在录制的标志(红点点)
    • 然后就可以操作录制脚本了
    • 在页面上做任何录制操作,当希望停止录制时,进入IDE插件,点击右上角的停止(圆框红色方框)按钮
    • 需要给录制过程起一个名字,输入之后,点击OK即可
    • IDE插件中的command代表操作的指令信息
  • 脚本录制完成之后,可以播放自动化测试脚本,需要你点击command上面的播放按钮(向右的小三角,后面没有三个点的)

IDE的缺点

  • IDE插件不能进行一些比较复杂的操作或者应用场景,例如需要if判断或者for循环重复执行的场景
  • IDE的稳定性不是特别的好,有时候会成功,有时候会失败
  • IDE录制的场景很固定,不能实现使用一个脚本套路,执行另外一种场景的情况

UI自动化驱动的基本介绍

  • 为了实现web自动化,则需要实现浏览器,驱动以及selenium、webdriver的安装,代码与浏览器之间的关系为:
    代码——三大驱动——三大浏览器
  • 当前三大浏览器与其对应的三大驱动为:
  • chome ——chomedriver
  • ie——ieserverdriver
  • firefox——geckodriver

webdriverde的安装

win系统,chrome浏览器驱动的安装

  • 作用:他可以和代码和浏览器会话,主要链接代码和浏览器,也就是说:代码——中间桥梁(驱动程序)——浏览器
  • 了解chrome的版本号,点击谷歌右侧的三个点——帮助——关于Goole Cjhrome来进行查看
  • 通过网址 来查找对应的浏览器驱动
  • 下载驱动程序后,将驱动程序压缩包解压放在pycharm的安装路径下,如图:
    在这里插入图片描述

mac电脑安装webdriver

  • 首先需要在电脑上配置python3的环境变量,首先需要获取python3和pip3的路径,使用以下命令获得
    • which python3which pip3,界面出现的返回结果如下
      在这里插入图片描述
  • 在终端中使用命令:open .bash_profile打开配置文件,输入以下配置信息,其中python3和pip3是刚刚which看到的信息
export PATH="$PATH:/usr/local/bin/python3"
alias python=/Library/Frameworks/Python.framework/Versions/3.10/bin/python3
alias pip =/Library/Frameworks/Python.framework/Versions/3.10/bin/pip3
  • 然后执行source ~/.bash_profile命令让配置文件生效
  • 确认pip3在环境是否可以运行,可以终端直接使用pip安装selenium,命令为:pip3 install selenium==3.141.0,可安装成功即可
    • 使用3.141.0的原因是:他比较稳定
      在这里插入图片描述
  • 还需要禁用电脑上chrome浏览器的自动升级,可以在终端使用命令:defaults write com.google.Keystone.Agent checkInterval 0,之后重启浏览器即可,重启后浏览器如下图示
    • 这里需要注意,执行这个命令之后不仅仅会关闭 Chrome 的自动更新功能,还会关闭装在当前电脑上所有 Google 软件的自动更新功能。所以,一般情况下不建议使用。
      在这里插入图片描述
  • 之后下载chrome相对应的驱动版本
  • 下载完成之后,将驱动放在/usr/local/bin,可以使用快捷键command+shift+G快速打开前往文件夹
  • 如果遇到问题如下图示,需要在设置——安全性与隐私——通用——允许以下位置的app中点击仍然允许按钮即可
    在这里插入图片描述

通过pip命令安装selenium

  • 打开电脑的cmd命令,进入电脑pip安装路径下,执行pip install -U selenium 命令即可
    在这里插入图片描述
  • 直接在pycharm的setting中进行安装
    在这里插入图片描述

验证selenium安装成功

  • 打开pychram 在py文件夹中引用selenium的webdirver的驱动
  • 实例化驱动中的Chrome然后赋值给变量,运行即可
  • 代码如下:
 from selenium import webdriver #从selenium中引进webdirver
 dirver = webdriver.Chrome() #实例化对象,通过变量接收
  • 如图,代表selenium安装成功
    在这里插入图片描述

webdriver和浏览器驱动之间的地址

  • 谷歌浏览器地址
  • 谷歌浏览器驱动
  • 火狐浏览器地址
  • 火狐浏览器驱动1 或者 火狐浏览器驱动2
  • Edge浏览器地址
  • Edge浏览器驱动
  • IE浏览器驱动
  • IE浏览器的版本直接在官网上下载即可,他的驱动和版本之间可以不对应
  • 谷歌浏览器关闭自动更新方法
  • 火狐浏览器关闭自动更新方法
  • IE浏览器注意事项:
    • 如果Edge浏览器下载下来的驱动名字一定要记得改为MicrosoftWebDriver.exe,否则会报错
    • 如果是IE浏览器,对应的版本选择并不是与IE浏览器对照的,而是与Selenium对照的,不要去用64位的IE驱动,官方推荐是使用32位的驱动
  • 使用IE浏览器做自动化,需要将浏览器的缩放尺寸设置为100%,浏览器默认尺寸为150,否则会报错Message: Unexpected error launching Internet Explorer. Browser zoom level was set to 150%. It should be set to 100%。注意这里并不是代码设置的尺寸,而是指的是浏览器设置的尺寸
    • 需要调整安全的设置,将所有驱动的安全设置给打开,否则会Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones.
    • 设置路径:IE浏览器——设置——Internet选项——安全——Internet等选项中——勾选最下面的“启动保护模式”选框
    • 注意 ,要勾选所有的保护模式,即Internet,本地Internet,受信任的站点,受限制的站点都需要勾选

webdriver安装常见的问题

  • 如果出现以下报错,是因为selenium版本和urllib3版本冲突导致,可以下载urllib3,然后定向重新安装版本
    在这里插入图片描述
    在这里插入图片描述

webdiver支持的浏览器

from .firefox.webdriver import WebDriver as Firefox  # noqa
from .firefox.firefox_profile import FirefoxProfile  # noqa
from .firefox.options import Options as FirefoxOptions  # noqa
from .chrome.webdriver import WebDriver as Chrome  # noqa
from .chrome.options import Options as ChromeOptions  # noqa
from .ie.webdriver import WebDriver as Ie  # noqa
from .ie.options import Options as IeOptions  # noqa
from .edge.webdriver import WebDriver as Edge  # noqa
from .opera.webdriver import WebDriver as Opera  # noqa
from .safari.webdriver import WebDriver as Safari  # noqa
from .blackberry.webdriver import WebDriver as BlackBerry  # noqa
from .phantomjs.webdriver import WebDriver as PhantomJS  # noqa
from .android.webdriver import WebDriver as Android  # noqa
from .webkitgtk.webdriver import WebDriver as WebKitGTK # noqa
from .webkitgtk.options import Options as WebKitGTKOptions # noqa
from .remote.webdriver import WebDriver as Remote  # noqa
from .common.desired_capabilities import DesiredCapabilities  # noqa
from .common.action_chains import ActionChains  # noqa
from .common.touch_actions import TouchActions  # noqa
from .common.proxy import Proxy  # noqa

webdriver的简单实用

  • 打开webdriver浏览器,全新打开,里面不会有任何数据,要使用代码:webdriver.Chrome()
  • 国产的浏览器,例如360,猎豹,遨游等,都是基于chromium内核定制修改,于chrome代码时类似的
  • 全屏显示浏览器窗口,可使用代码maximize_window()
  • 使用with上下文管理器,可自动关闭浏览器
from selenium import webdriver
import time

with webdriver.Chrome() as driver:
    driver.get("https://www.baidu.com")
    driver.maximize_window()
    time.sleep(5)

selenium 工作原理

  • webdriver协议,其目的是用来制定通讯的规则
  • werbdriver协议,是selenium基于http协议设计并定义的协议,各大浏览器厂商都提供了实现该协议的驱动程序,通过这套协议,我们可以操作里欧兰奇实现各种控制动作,例如打开,关闭,最大化,最小化,元素定位,元素操作等
  • 简单的来说,步骤如下:
    • 首先,selenium客户端(可能是java,python等代码编写),启动驱动程序,通过驱动打开浏览器,建立链接并获得session ID
    • 然后,selenium客户端通过webdriver协议通讯,发送指令给不同浏览器厂商开发的驱动程序
    • 驱动程序会讲自己内部将指令翻译,再去讲翻译后的指令转发给浏览器
    • 浏览器就能够去执行对应的指令并将结果告诉客户端
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值