zoukankan      html  css  js  c++  java
  • Selenium+Python3的web自动化测试(一)

    本文章内容参考了白夜黑羽教python的教程,出处为http://www.python3.vip/doc/tutorial/selenium/01/

    感谢上方大佬!

    所整理的正文如下:

    首先,在搭建好Selenium+Python3的环境基础上,测试要点如下:

    1.打开指定的网页

    1 from selenium import webdriver
    2 
    3 #选择要测试的浏览器平台(此处我用的火狐)
    4 wd = webdriver.Firefox()
    5 
    6 #打开指定的页面(此处以百度为例)
    7 wd.get('https://www.baidu.com')

    2.在页面的输入框输入内容(再执行搜索之类的操作)

     1  from selenium import webdriver
     2  
     3  wd = webdriver.Firefox()
     4  wd.get('https://www.baidu.com')
     5 
     6 #用F12在待测页面查看输入框的id(因为根据规范, 如果元素有id属性 ,这个id 必须是当前html中唯一的。)再用这个find方法确定元素位置。
     7 #百度的输入框id为kw
     8 element = wd.find_element_by_id('kw')
     9 
    10 #用send来键入内容(此处写入的是白月黑羽)(如果输入框中有默认的内容,还需要先清除掉)
    11 element.clear()12 element.send_keys('白月黑羽') 13 #一些页面需要点击旁边的“搜索”来执行的话,就要点击搜索button,那么用上面的方法确定好这个button的元素,进行点击操作。(百度的搜索button的id为su) 14 ClickSearch = wd.find_element_by_id('su') 15 ClickSearch.click()

    3.通过class属性或者tag名来确定元素(测试网页http://f.python3.vip/webauto/sample1.html)

     1 from selenium import webdriver
     2 
     3 wd = webdriver.Firefox()
     4 wd.get('http://f.python3.vip/webauto/sample1.html')
     5 
     6 #一般来说,页面的class属性或tag名可以对应的是多个元素,所以注意选取的方法中是elements
     7 elements = wd.find_elements_by_class_name('animal')
     8 
     9 #这句是用tag找到的多个元素
    10 #elements = wd.find_elements_by_tag_name('div')
    11 
    12 #以txt文本的形式打印出所有获得到的element
    13 for element in elements:
    14     print(element.text)
    15 
    16 """find_element 和 find_elements 的区别
    17 使用 find_elements 选择的是符合条件的 所有 元素, 如果没有符合条件的元素, 返回空列表
    18 使用 find_element 选择的是符合条件的 第一个 元素, 如果没有符合条件的元素, 抛出 NoSuchElementException 异常"""

    4.通过多种方法结合来确定元素

     1 from selenium import webdriver
     2 
     3 wd = webdriver.Firefox()
     4 wd.get('http://f.python3.vip/webauto/sample1.html')
     5 
     6 # 限制选择元素的范围是id为container 元素的内部。
     7 element = wd.find_element_by_id('container')
     8 spans = element.find_elements_by_tag_name('span')
     9 for span in spans:
    10     print(span.text)

    5.设置等待时间(代码运行过快,设定时间周期性试探访问,可提高效率)

     1 from selenium import webdriver
     2 
     3 wd = webdriver.Firefox()
     4 wd.get('https://www.baidu.com')
     5 
     6 #设置试探访问的周期为0.5s,放在这个位置是因为后续所有的find_element或者find_elements之类的方法调用都会采用这个策略:
     7 wd.implicitly_wait(0.5)
     8 
     9 element = wd.find_element_by_id('kw')
    10 element.send_keys('白月黑羽
    ')
    11 ClickSearch = wd.find_element_by_id('su')
    12 ClickSearch.click()
    13 
    14 #访问id为1的元素 就是第一个搜索结果
    15 Newelement = wd.find_element_by_id('1')
    16 print (Newelement.text)

    6.退出web

     1 wd.quit()

    7.获取元素信息

     1 #获取元素的文本内容
     2 element = wd.find_element_by_id('animal')
     3 print(element.text)
     4 
     5 #获取元素属性
     6 element = wd.find_element_by_id('input_name')
     7 print(element.get_attribute('class'))
     8 
     9 #获取整个元素对应的HTML文本内容
    10 element.get_attribute('outerHTML')
    11 
    12 #只是想获取某个元素内部的HTML文本内容
    13 element.get_attribute('innerHTML')
    14 
    15 #获取输入框里面的文字
    16 element.get_attribute('value')
    17 
    18 #获取元素展示在界面上的文本内容。
    19 #有时候,元素的文本内容没有展示在界面上,或者没有完全完全展示在界面上。那么
    20 element.get_attribute('innerText') 
    21 #或者 
    22 #element.get_attribute('textContent'
  • 相关阅读:
    spring: web学习笔记1异常处理:No adapter for handler
    maven: maven编译时指定maven库,即指定profile
    spring: 一些基本配置也许只有自己能够读懂
    ruby: rdoc生成文档的好工具
    php: eclipse 编辑 php
    ssh免密码登录, 发送命令到多个Linux
    ruby: 使用netbeans debug ruby
    maven: maven创建工程,web工程等普通java app, web app
    IE, firefox竖向 横向滚动条处理
    获取指定进程在一段时间内cpu和内存的最大最小值【调试版】
  • 原文地址:https://www.cnblogs.com/RuiRuia/p/12167030.html
Copyright © 2011-2022 走看看