Python+Selenium UI自动化测试环境搭建及使用

一、什么是Selenium

Selenium 是一个浏览器自动化测试框架,它主要用于web应用程序的自动化测试,其主要特点如下:开源、免费;多平台、浏览器、多语言支持;对web页面有良好的支持;API简单灵活易于使用;支持分布式测试用例执行。 Selenium经历了两个版本,Selenium1.0和2.0,Selenium1.0主要由以下几部分构成:

  • Selenium IDE:是一个嵌入到Firefox中的插件,可以实现浏览器的录制于回放功能。
  • Selenium Grid:自动化测试辅助工具,可以很方便地同时在多台机器上并行运行多个测试事例。
  • Selenium RC:是Selenium的核心工具,支持多种不同的语言编写的测试脚本,通过Selenium RC的服务器作为代理服务器去访问应用从而达到测试的目的。主要分为以下两部分:
  1. Client:用来编写测试脚本来控制Selenium server的库。
  2. Server:负责控制浏览器的行为,包含三部分:Launcher;HttpProxy;Core。

 明白了Selenium1.0的家族关系,Selenium2.0可以简单的认为是将WebDriver加入到了Selenium RC这一部分中去。那么Selenium RC和WebDriver有什么区别呢? RC和 WebDriver 类似,都可以看做是一套操作web页面的规范。当然,他们的工作原理不一样。

  • Selenium RC 在浏览器中运行 JavaScript 应用,使用浏览器内置的 JavaScript 翻译器来翻译和执行selenese 命令(Selenium 命令集合) 。
  • WebDriver 通过原生浏览器支持或者浏览器扩展直接控制浏览器。WebDriver 针对各个浏览器而开发,取代了嵌入到被测 Web 应用中的 JavaScript。与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript 安全模型导致的限制。除了来自浏览器厂商的支持,WebDriver 还利用操作系统级的调用模拟用户输入。

二、Selenium环境搭建

  1. 安装python

    python的安装此处就不细说,去python官网,下载对应的python版本安装,注意环境变量的配置。

  2. 安装Selenium
    使用pip 命令安装 selenium pip install selenium , Mac电脑 安装过python3 使用pip3 install selenium 来安装。

  3. 安装浏览器驱动 使用chrome浏览器,需要下载对应版本的chromedriver

  4. 安装上述工具后,可以测试下环境是否正常,使用以下这段代码

  1. # -*- coding:utf-8 -*-

  2. from selenium import webdriver

  3. driver = webdriver.Chrome()

  4. driver.get("http://baidu.com")

  5. driver.close()

  6. 复制代码复制代码

浏览器能正常打开百度,那么环境安装是正常的

三、WebDriver API

  1. 定位元素
  • 通过id属性来定位元素(id属性在html文档中必须具有唯一性)

    find_element_by_id()方法

  • 通过name属性来定位元素(name属性在当前页面中)

    find_element_by_name()方法

  • 通过class属性来定位元素

    find_element_by_class_name()方法

  • 通过tag来定位元素

    find_element_by_tag_name()方法

  • 通过link元素标签对之间的文本信息来定位元素

    find_element_by_link_text()方法

  • 通过partial link定位元素,和link类似,只不过是部分文本信息来进行定位

    find_element_by_partial_link_text()方法

  • find_element_by_xpath()方法

  • 绝对路径来定位:find_element_by_xpath('/html/body/.........')

文本框:find_element_by_xpath("/html/body/div[2]/div[1]/div/div[1]/div/form/span[1]/input")

  • 通过CSS定位元素

    • 通过id属性定位元素
  • 文本框:find_element_by_css_selector("#kw")

    按钮:find_element_by_css_selector("#su")

  • 通过class属性定位元素

文本框:find_element_by_css_selector(".s_ipt")

按钮:find_element_by_css_selector(".bg s_btn")

  • 通过其他属性值来定位元素

文本框:

find_element_by_css_selector("[name = 'wd']")

find_element_by_css_selector("[maxlength = 255]")

find_element_by_css_selector("[autocomplete = 'off']")

控制浏览器

控制浏览器窗口大小:

  1. driver=webdriver.Firefox()

  2. #设置窗口大小为x,y

  3. driver.set_window_size(x,y)

  4. #最大化窗口

  5. driver.maxmize_window()

  1. 元素操作

当我们获取了元素之后,还要对其进行操作,如点击按钮、输入文字、提交表单等。大多数页面交互的方法通过WebElement接口提供,常用的有:

  • clear() 清除文本框中的文本
  • send_keys(*value) 模拟按键输入
  • click() 单击元素 这几个方法很简单,很方便使用。 submit() 用于提交表单,例如搜索框中的提交按钮。比如我们可以用如下代码直接输入搜索的关键字后用submit()提交,而不用获取搜索按钮再点击。

driver.find_element_by_css_selector("#kw").send_keys("selenium2").submit()

还有几个常用的方法:

  • size() 获取元素的大小尺寸
  • text()获取元素的文本
  • is_displayed()元素是否可见
  1. 鼠标、键盘事件

模拟鼠标右键、双击、悬停、拖拽等操作,会用到ActionChains类。selenium.webdriver.common.action_chains.ActionChains(driver)当调用ActionChains的方法时,不会立即执行,而是会将所有的操作按顺序存放在一个队列里,当你调用perform()方法时,队列中的时间会依次执行。

ActionChains方法列表:

  1. click(on_element=None) ——单击鼠标左键

  2. click_and_hold(on_element=None) ——点击鼠标左键,不松开

  3. context_click(on_element=None) ——点击鼠标右键

  4. double_click(on_element=None) ——双击鼠标左键

  5. drag_and_drop(source, target) ——拖拽到某个元素然后松开

  6. drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开

  7. key_down(value, element=None) ——按下某个键盘上的键

  8. key_up(value, element=None) ——松开某个键

  9. move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标

  10. move_to_element(to_element) ——鼠标移动到某个元素

  11. move_to_element_with_offset(to_element, xoffset, yoffset) ——移到距某个元素(左上角)多少距离的位置

  12. perform() ——执行链中的所有动作

  13. release(on_element=None) ——在某个元素位置松开鼠标左键

  14. send_keys(*keys_to_send) ——发送某个键到当前焦点的元素

  15. send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素

  16. 复制代码复制代码

  1. 设置等待时间
  • 显示等待: - 主要使用的类和方法:WebDriverWait、uitil\until_not、Expected Conditions。

  • 隐式等待: - implicitly_wait

  1. 其他操作 还有其他一些操作如:上传下载文件、操作cookie、验证码的处理等等操作还没有用到过,用到的时候再去学习就好了。 熟练使用以上的各部分,可以写出各种常用的脚本,我们算是入门Selenium了
总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方进群即可自行领取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值