python+selenium 自动化测试

本文介绍了使用Python和Selenium进行Web自动化测试的基本流程和关键技巧。内容包括搭建测试环境,确保浏览器和驱动对应;详细阐述了元素定位,如通过标签、ID、类名、超链接、XPath和CSS选择器;讨论了元素定位常见问题,如IFrame中的元素定位;最后讲解了元素等待的重要性,包括显式等待、隐式等待和强制等待的不同应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 搞定selenium 元素定位及操作

1.1 搭建测试环境

  • 浏览器安装
    • Chorme firefox ie
    • 查看浏览器版本
  • 浏览器驱动
    • Chorme http://npm.taobao.org/mirrors/chromedriver/
    • Firefox https://github.com/mozilla/geckodriver/releases
    • ie http://selenium-release.storage.googleapis.com/index.html
    • 注意事项
      • 浏览器和浏览器驱动相对应
      • 驱动版本和浏览器版本相对应
      • 存放路径(python 根目录)
  • python+selenium
    • python – 语言环境
    • Selenium – pip install selenium

1.2 web自动化测试流程

  • 操作步骤
    • 导入selenium
    • 打开浏览器
      • 浏览器驱动地址
    • 输入网址
    • 对页面进行操作
      • 元素定位
      • 常见的元素操作
        • Clear()
        • Send_keys()
        • Click()
    • 关闭浏览器
"""
导入驱动
打开浏览器(不带控件)
输入网址
窗口最大化
3秒后关闭浏览器
"""
import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
time.sleep(3)
driver.quit()

1.3 元素定位方式及常见问题

  • 什么是元素定位

    • 查找html元素的过程
  • 标签

    <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
    
    • input – 标签名
    • id name class value maxlength autocomplete – 属性名
    • kw wd … – 属性值
  • 元素定位方式

    • 标签

      • id name class_name tag_name

        • 定位方式
          driver.find_element_by_()
          
      • 超链接

        • link_text partical_link_text

        • ele = driver.find_element_by_partial_link_text("hao")
          
      • xpath css

        • Xpath –

          • 绝对路径 (从根目录一层一层进行查找) /html/body/form

          • 相对路径 (// input[@id=“kw”])

          • ele = driver.find_element_by_xpath("//input[@id='kw']")
            
        • css

          • Css 是一种语言 用来描述 html和xml文档 css 使用选择器来为页面绑定css属性 这些选择器可以被selenium用于定位

            • Id – # id_value

            • class – .class_value

            • 标签+属性

              ele = driver.find_element_by_css_selector("input[class=s_ipt]")
              
  • 元素定位常见问题

    • 页面元素未成功加载
    • 切换页面未找到元素
      • 京东点击手机 – 选择锁定输入框
    • Iframe 原因找不到定位元素
      • qq 邮箱登陆

1.4 元素等待

  • 什么是元素等待

    • Webdriver 定位页面元素时 会在指定时间内一直等待的过程 为了保证脚本运行的稳定性 需要脚本中添加等待时间
  • 等待方式

    • 显示等待 隐式等待 强制等待
  • 区别

    • 显示等待

      • 直到元素出现才去操作,如果超时则报异常

      • WebDriverWait()

      • 通常和EC 模块结合使用

      • from selenium import webdriver
        from selenium.webdriver.support.wait import WebDriverWait
        from selenium.webdriver.support import expected_conditions as EC
        from selenium.webdriver.common.by import By
        
        driver = webdriver.Chrome()
        driver.get("https://www.baidu.com")
        # 如果强制等待3秒 -- 导入time 使用time.sleep() 即可
        """
        显示等待  通常会和EC 模块进行配合使用
        """
        # presence_of_element_located() -- 参数是一个元组
        # ele = WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located(("name", "wd")))
        ele = WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located(("link text", "新闻")))
        
        print(ele.get_attribute("outerHTML"))
        
        
    • 隐式等待

      • 实际上浏览器会在你自己设定的时间内部断的刷新页面去寻找我们需要的元素
      • implicity_wait()
      from selenium import webdriver
      """
      当使用了隐士等待执行测试的时候,如果 WebDriver没有在 DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常
      """
      driver = webdriver.Chrome()
      driver.implicitly_wait(5)
      driver.get("https://www.baidu.com")
      ele = driver.find_element_by_id("kw")
      print(ele.get_attribute("outerHTML"))
      
    • 强制等待

      • 程序必须等待时间
      • time.sleep()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值