zoukankan      html  css  js  c++  java
  • 记一个Selenium自动化测试网页

    今天想跟大家分享的是Selenium自动化测试网页,就是关于selenium的自动化测试一些基础的东西,如有不对的地方请多多指教。

    一、安装环境

    1、Python环境

    安装完成后通过Windows命令提示符CMD输入“python”,查看是否安装成功

    2、安装setuptools与pip

    setuptools是PEAK(Python enterprise Application Kit)的一个副项目,是python的distutilsde的增强工具,可以更方便创建和发布python包,特别是对其他包有依赖的情况;

    pip是一个安装和管理python包的工具,通过pip来安装python包将变得很简单,省去了繁琐的过程,pip的安装依赖于setuptools,安装pip之前需要先安装setuptools;

    3、下载selenium包

    pip install selenium

    4.下载浏览器驱动

    火狐和谷歌各有各的驱动

    下载链接:https://www.seleniumhq.org/do...

    简单示例

    示例名称: test_python_org_search.py

       import unittest

           #引入 unittest 模块是基于JAVAJUnit的Python内置的模块。 该模块提供了一个框架去组织测试用例

      from selenium import webdriver

      #selenium.webdriver 模块提供了所有WebDriver的实现

      from selenium.webdriver.common.keys import Keys

      # Keys 类提供所有的键盘按键操作

      class PythonOrgSearch(unittest.TestCase):

      #测试类继承自 unittest.TestCase. 继承 TestCase 类是告诉 unittest 模块该类是一个测试用例

      def setUp(self):

      self.driver = webdriver.Firefox()

      #SetUp 方法是初始化的一部分,创建了一个Firefox WebDriver的一个实例

      def test_search_in_python_org(self):

      driver = self.driver

      driver.get("http://www.python.org")

      #driver.get 方法将会根据方法中给出的URL地址打开该网站

      self.assertIn("Python", driver.title)

      #使用assert断言的方法判断在页面标题中是否包含 “Python”

      elem = driver.find_element_by_name("q")

      #找到name为q的DOM节点

      elem.send_keys("pycon")

      #在name为q的DOM节点中,输入pycon

      elem.send_keys(Keys.RETURN)

      #按enter键

      assert "No results found." not in driver.page_source

      def tearDown(self):

      self.driver.close()

      #tearDown 方法会在每一个测试方法执行之后被执行。 该方法可以用来做一些清扫工作,比如关闭浏览器。 当然你也可以调用 quit 方法代替`close`方法

      #区别:quit 将关闭整个浏览器,而`close`只会关闭一个标签页

      if __name__ == "__main__":

      unittest.main()

      #入口函数

    可直接在shell中运行:python test_python_org_search.py

     常用方法讲解

     1.打开一个页面

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

      WebDriver 将等待,直到页面完全加载完毕(其实是等到 onload 方法执行完毕), 然后返回继续执行你的脚本。 值得注意的是,如果你的页面使用了大量的Ajax加载, WebDriver可能不知道什么时候页面已经完全加载。

    2.与页面交互

      WebDriver 提供了大量的方法帮助你去查找元素,例如

     <input type="text" name="passwd" id="passwd-id" />

      可通过以下方法查找:

           element = driver.find_element_by_id("passwd-id")

      element = driver.find_element_by_name("passwd")

      element = driver.find_element_by_xpath("//input[@id='passwd-id']")

      你还可以通过链接的文本查找他,需要注意的是,这个文本必须完全匹配。 当你使用XPATH时,你必须注意,如果匹配超过一个元素,只返回第一个元素。 如果上面也没找到,将会抛出 NoSuchElementException异常。

      执行一些操作,例如:

      在文本框中输入一些内容:element.send_keys("some text")

      清除内容:element.clear()

      选择下拉框:WebDriver的支持类有一个叫做 Select的类

      from selenium.webdriver.support.ui import Select

      select.select_by_index(index)根据option的顺序

      select.select_by_visible_text("text")根据文本

      select.select_by_value(value)根据它的value值

      取消选择:select.deselect_all()

      提交选择:element.submit()

     3.拖放

       element = driver.find_element_by_name("source")

      target = driver.find_element_by_name("target")

      from selenium.webdriver import ActionChains

      action_chains = ActionChains(driver)

      action_chains.drag_and_drop(element, target).perform()

     4.弹出对话框处理方式

      alert = driver.switch_to_alert()

      switch_to_alert()   #定位弹出对话

      text()    #获取对话框文本值

      accept() #相当于点击"确认"

      dismiss() #相当于点击"取消"

      send_keys() # 输入值,这个alert和confirm没有输入对话框,所以这里就不能用了,所以这里只能使用在prompt这里。

           如果对软件测试、接口测试、自动化测试、面试经验交流。感兴趣可以加软件测试交流:1085991341,还会有同行一起技术交流。

     5.操作cookie

      打开一个页面 driver.get(“http://www.example.com”)

      现在设置Cookies,这个cookie在域名根目录下(”/”)生效 cookie = {‘name’ : ‘foo’, ‘value’ : ‘bar’} driver.add_cookie(cookie)

      现在获取所有当前URL下可获得的Cookies driver.get_cookies()

    6.查找元素

      find_element_by_id

      find_element_by_name

      find_element_by_xpath

      find_element_by_link_text

      find_element_by_partial_link_text

      find_element_by_tag_name

      find_element_by_class_name

      find_element_by_css_selector

    以上内容希望对你有帮助,有被帮助到的朋友欢迎点赞,评论。

  • 相关阅读:
    visual studio notes
    使用.net创建activex控件
    在程序中打开/关闭monitor or lcd
    Memory Barrier in Compiler and CPU
    被动工作与主动工作
    排序算法总结
    经典计算机基础数据结构:二叉树
    微软的Challenge文化
    海量数据处理方法的分析
    数组
  • 原文地址:https://www.cnblogs.com/Chaqian/p/12802998.html
Copyright © 2011-2022 走看看