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

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

  • 相关阅读:
    从Oracle提供两种cube产品说开
    Sql Server DWBI的几个学习资料
    Unload Oracle data into text file
    初学Java的几个tips
    我常用的Oracle知识点汇总
    benefits by using svn
    如何在windows上使用putty来显示远端linux的桌面
    building commercial website using Microsoft tech stack
    Understand Thread and Lock
    Update google calendar by sunbird
  • 原文地址:https://www.cnblogs.com/Chaqian/p/12802998.html
Copyright © 2011-2022 走看看