Web自动化测试框架Selenium在Python中的使用

1.什么是Selenium?

  • Selenium是最广泛使用的开源Web UI(用户界面)自动化测试套件之一。它最初由杰森·哈金斯(Jason Huggins)于2004年开发,作为Thought Works的内部工具。
  • Selenium支持跨不同浏览器,平台和编程语言的自动化。
  • Selenium可以轻松部署在Windows,Linux,Solaris和Macintosh等平台上。此外,它支持IOS(IOS,Windows Mobile和Android)等移动应用程序的OS(操作系统)。
  • Selenium通过使用特定于每种语言的驱动程序支持各种编程语言。Selenium支持的语言包括C#,Java,Perl,PHP,Python和Ruby。
  • Selenium支持的浏览器包括Internet Explorer,Mozilla Firefox,Google Chrome和Safari。

2.它有哪些特点?

  • 开源软件:源代码开放可以根据需要来增加工具的某些功能
  • 跨平台:linux 、windows 、mac
  • 核心功能:就是可以在多个浏览器上进行自动化测试
  • 多语言:Java、Python、C#、JavaScript、Ruby等
  • 成熟稳定:目前已经被google , 百度, 腾讯等公司广泛使用
  • 功能强大:能够实现类似商业工具的大部分功能,因为开源性,可实现定制化功能

3.测试工具WebDriver

  • Webdriver (Selenium2)是一种用于Web应用程序的自动测试工具
  • 它提供了一套友好的API
  • Webdriver完全就是一套类库,不依赖于任何测试框架,除了必要的浏览器驱动
  • WebDriver支持的浏览器有 Firefox 、IE、Opera、Chrome、safari、HtmlUnit

4.浏览器相关测试操作

  • maximize_window

    # 最大化浏览器
    driver = webdriver.Chrome()
    driver.maximize_window()
    
  • refresh

    # 刷新浏览器
    driver = webdriver.Chrome()
    driver.refresh()
    
  • close

    # 关闭某个浏览器窗口
    driver = webdriver.Chrome()
    driver.close()
    
  • quit

    # 关闭浏览器所有窗口
    driver = webdriver.Chrome()
    driver.quit()
    
  • title

    # 获取浏览器当前窗口的标题
    driver = webdriver.Chrome()
    print(driver.title)
    
  • current_url

    # 获取浏览器当前窗口的URL
    driver = webdriver.Chrome()
    print(driver.current_url)
    

5.HTML元素的定位操作

  • id

    # 通过元素ID属性进行定位
    driver.find_element_by_id()
    
  • name

    # 通过元素name属性进行定位
    driver.find_element_by_name()
    driver.find_elements_by_name()
    
  • class_name

    # 通过元素class属性进行定位
    driver.find_element_by_class_name()
    driver.find_elements_by_class_name()
    
  • tag_name

    # 通过元素标签名进行定位
    driver.find_element_by_tag_name()
    driver.find_elements_by_tag_name()
    
  • link_text

    # 通过超文本链接元素<a></a>的文本进行精准定位
    driver.find_element_by_link_text()
    driver.find_elements_by_link_text()
    
  • partial_link_text

    # 通过超文本链接元素<a></a>的文本进行模糊定位
    driver.find_element_by_partial_link_text()
    driver.find_elements_by_partial_link_text()
    
  • xpath

    # 通过绝对定位进行定位
    driver.find_element_by_xpath("/html/body/div/p[2]")
    # 通过相对定位进行定位
    driver.find_element_by_xpath("//input[@id='username']")
    # 通过元素属性进行定位
    driver.find_element_by_xpath("//*[@name='hobby'] ")
    # 通过层级与属性结合进行定位
    driver.find_element_by_xpath("//*[@id='myfrom']/input")
    # 通过属性与逻辑结合进行定位
    driver.find_element_by_xpath("//*[@id='password' and @name='password']")
    
  • css
    请添加图片描述

    # 通过id进行定位
    driver.find_element_by_css_selector("#username")
    # 通过clss进行定位
    driver.find_element_by_css_selector(".username")
    # 通过元素进行定位
    driver.find_element_by_css_selector("input")
    # 通过属性进行定位
    driver.find_element_by_css_selector("[type='hidden']")
    # 通过层级选择器进行定位
    driver.find_element_by_css_selector("p>input")
    

6.HTML元素的获取操作

  • send_keys

    # 输入元素的文本
    username = driver.find_element_by_id("username")
    username.send_keys("zhangsan")
    
  • clear

    # 清除元素的文本
    username = driver.find_element_by_id("username")
    username.clear()
    
  • click

    # 单击元素
    button = driver.find_element_by_id("btn")
    button.click()
    
  • size

    # 获取元素的大小
    username = driver.find_element_by_id("username")
    print(username.size)
    
  • text

    # 获取元素的文本
    username = driver.find_element_by_id("username")
    print(username.text)
    
  • get_attribute

    # 获取元素的属性
    img = driver.find_element_by_id("picture")
    img.get_attribute("src")
    

7.HTML元素的等待操作

WebDriver定位页面元素时如果未找到,会在指定时间内一直等待的过程

  • 显示等待

    显式等待作用于单个元素, 方法封装在WebDriverWait类中

  • 隐式等待

    隐式等待作用于全局元素, 方法直接通过浏览器实例化对象调用

    • 如果定位某一元素定位失败,那么就会触发隐式等待有效时长
    • 如果在指定时长内加载完毕,则继续执行
    • 否则抛出NoSuchElementException异常,如果元素在第一次就定位到则不会触发隐式等待时长
    driver.implicitly_wait(10)
    

8.鼠标相关测试操作

  • context_click

    from selenium.webdriver.common.action_chains import ActionChains
    
    username = driver.find_element_by_id("username")
    
    action = ActionChains(driver)
    # 鼠标右键点击
    element = action.context_click(username)
    # 执行
    element.perform()
    
  • double_click

    from selenium.webdriver.common.action_chains import ActionChains
    
    username = driver.find_element_by_id("username")
    
    action = ActionChains(driver)
    # 鼠标双击
    element = action.double_click(username)
    # 执行
    element.perform()
    
  • drag_and_drop

    from selenium.webdriver.common.action_chains import ActionChains
    
    div1 = driver.find_element_by_id("div1")
    div2 = driver.find_element_by_id("div2")
    
    action = ActionChains(driver)
    # 鼠标拖拽
    element = action.drag_and_drop(div1, div2)
    # 执行
    element.perform()
    
  • move_to_element

    from selenium.webdriver.common.action_chains import ActionChains
    
    img = driver.find_element_by_id("picture")
    
    action = ActionChains(driver)
    # 鼠标悬停
    element = action.move_to_element(img)
    # 执行
    element.perform()
    

9.键盘相关测试操作

from selenium.webdriver.common.keys import Keys

send_keys(Keys.BACK_SPACE)  #删除键(BackSpace)
send_keys(Keys.SPACE)       #空格键(Space)
send_keys(Keys.TAB)         #制表键(Tab)
send_keys(Keys.ESCAPE)      #回退键(Esc)
send_keys(Keys.ENTER)       #回车键(Enter)
send_keys(Keys.CONTROL,'a') #全选(Ctrl+A)
send_keys(Keys.CONTROL,'c') #复制(Ctrl+C)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Selenium 是一个用于自动化 Web 浏览器操作的 Python 库。它可以模拟用户在浏览器的行为,如点击、输入、提交表单等。Selenium 可以与各种不同的浏览器(如 Chrome、Firefox、Edge 等)进行集成,并且支持多种编程语言,包括 Python。 在 Python 使用 Selenium 进行自动化测试,你需要首先安装 Selenium 库。你可以通过 pip 命令来安装,如下所示: ``` pip install selenium ``` 安装完毕后,你还需要下载对应浏览器的 WebDriver,WebDriver 是 Selenium 的一个核心组件,它负责与浏览器进行通信。你可以通过浏览器的官方网站或者 Selenium 官方文档找到对应的 WebDriver 下载地址。 一旦安装好 Selenium 和对应的 WebDriver,你就可以开始编写自动化测试代码了。你可以使用 Selenium 提供的 API 来控制浏览器进行各种操作,如打开网页、查找元素、填写表单等。 以下是一个简单的示例代码,演示了如何使用 Selenium 在 Chrome 浏览器打开百度并搜索关键词: ```python from selenium import webdriver # 创建一个 Chrome 浏览器对象 driver = webdriver.Chrome() # 打开百度首页 driver.get("https://www.baidu.com") # 根据 ID 获取搜索框元素,并输入关键词 search_box = driver.find_element_by_id("kw") search_box.send_keys("Python 自动化测试") # 提交搜索表单 search_box.submit() # 关闭浏览器 driver.quit() ``` 通过编写类似这样的代码,你可以实现更复杂的自动化测试功能,如点击按钮、选择下拉框、验证页面元素等。Selenium 还提供了丰富的 API 文档和示例代码,可以帮助你更好地理解和使用它。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小吉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值