zoukankan      html  css  js  c++  java
  • 第 6 章 Selenium 常用方法(一) Selenium 3+Python 3 自动化测试

    第 6 章 Selenium 常用方法

    Selenium 元素定位与常用方法类似,都是和页面元素打交道。元素定位负责在页面上定位到期望元素,方法则是对这些元素做出一些期望操作。正是两者的配合才使得 UI 自动化测试变得可能

    6.1 基本方法

    1.send_keys 方法

    此方法类似于模拟键盘键入。以在百度首页搜索框输入「Selenium」为例,代码如下

    #学习有疑问请联系作者
    #coding=utf-8
    
    from selenium import webdriver
    #要把chromedriver.exe放到D:Python38目录中
    #启动浏览器
    browser = webdriver.Chrome()
    browser.get('https://www.baidu.com/')
    #执行后,输入框输入字符”Selenium“
    browser.find_element_by_id('kw').send_keys('Selenium')
    View Code

    2.text 方法

    Selenium 提供了 text 方法用于获取文本值,即 HTML 标签「<a></a>」之间的文字。以在百度首页超链接「新闻」为例,代码如下

    #学习有疑问请联系作者
    #coding=utf-8
    
    from selenium import webdriver
    #要把chromedriver.exe放到D:Python38目录中
    #启动浏览器
    browser = webdriver.Chrome()
    browser.get('https://www.baidu.com/')
    #执行后,控制台打印“新闻”
    print(browser.find_element_by_link_text("贴吧").text)
    View Code

    3.get_attribute)获取属性值

    以百度首页的「百度一下」按钮为例,获取属性 value 对应的值(页面元素如图 6.1 所示,可以用 get_attribute 方法来实现


    图 6.1

    示例代码如下所示

    #学习有疑问请联系作者
    #coding=utf-8
    
    from selenium import webdriver
    #要把chromedriver.exe放到D:Python38目录中
    #启动浏览器
    browser = webdriver.Chrome()
    browser.get('https://www.baidu.com/')  #打开百度首页
    #执行后,控制台打印“百度一下”
    print(browser.find_element_by_id("su").get_attribute('value'))
    View Code

    4.maximize_window

    该方法用来实现浏览器窗口最大化,代码如下所示

    #学习有疑问请联系作者
    #coding=utf-8
    
    from selenium import webdriver
    #要把chromedriver.exe放到D:Python38目录中
    #启动浏览器
    browser = webdriver.Chrome()
    #浏览器窗口最大化
    browser.maximize_window()
    browser.get('https://www.baidu.com/')  #打开百度首页
    View Code

    5.current_window_handle

    返回窗口句柄,即标识窗口字符串,如图 6.2 所示,当前窗口的句柄字符串是「CDwindow-4927F74D2FBC4FB4CC3D076CFE9A6AAF


    图 6.2

    #学习有疑问请联系作者
    #coding=utf-8
    
    from selenium import webdriver
    #要把chromedriver.exe放到D:Python38目录中
    #启动浏览器
    browser = webdriver.Chrome()
    #浏览器窗口最大化
    #browser.maximize_window()
    browser.get('https://www.baidu.com/')  #打开百度首页
    print(browser.current_window_handle)
    View Code

    6.current_url

    获取当前窗口 URL,如图 6.3 所示,当前浏览器窗口的 URL 是「https://www.baidu.com


    图 6.3

    #coding=utf-8
    
    from selenium import webdriver
    #要把chromedriver.exe放到D:Python38目录中
    #启动浏览器
    browser = webdriver.Chrome()
    #浏览器窗口最大化
    #browser.maximize_window()
    browser.get('https://www.baidu.com/')  #打开百度首页
    print(browser.current_url)
    View Code

    7.is_selected

    判断元素是否被选择,多用于选择框,如果多选框是被选中的状态返回「True,反之则返回「False。示例代码如下

     

    8.is_enabled

    判断页面元素是否可用,可用则返回「True,不可用则返回「False。示例代码如下

    9.is_displayed

    判断元素在页面中是否显示,显示则返回「True,不显示则返回「False。示例代码如下

    10.clear

    清除输入框值。以在百度搜索框输入「Selenium,再清除为例,示例代码如下

    11.quit

    关闭浏览器并杀掉 chromedriver.exe 进程。以 Windows 为例,运行后任务管理器中的驱动进程将被杀掉,如图 6.4 所示


    图 6.4

    12.title

    获取页面「title。以百度首页为例,对应「title」为「百度一下,你就知道,代码如下

    13.refresh

    刷新页面,类似键盘中的「F5」键或「CTRL+F5」键,代码如下

    14.back

    浏览器工具栏向后操作,以访问百度首页并后退至空页面为例,代码如下

    15.forward

    浏览器工具栏向前操作,代码如下

    6.2 特殊元素定位

    6.2.1 鼠标悬停操作

    鼠标悬停,即当光标与其名称表示的元素重叠时触发的事件,在 Selenium 中将键盘鼠标操作封装在 Action Chains 类中。Action Chains 类的主要应用场景为单击鼠标、双击鼠标、鼠标拖曳等。部分常用的方法使用分类如下

    · click(on_element=None,模拟鼠标单击操作

    · click_and_hold(on_element=None,模拟鼠标单击并且按住不放

    · double_click(on_element=None,模拟鼠标双击

    · context_click(on_element=None,模拟鼠标右击操作

    · drag_and_drop(source,target,模拟鼠标拖曳

    · drag_and_drop(source,xoffset,yoffset,模拟将目标拖曳到目标位置

    · key_down(value,element=None,模拟按住某个键,实现快捷键操作

    · key_up(value,element=None,模拟松开某个键,一般和 key_down 操作一起使用

    · move_to_element(to_element,模拟将鼠标移到指定的某个页面元素

    · move_to_element_with_offset(to_element,xoffset,yoffset,移动鼠标至指定的坐标

    · perform,将之前一系列的 ActionChains 执行

    · release(on_element=None,释放按下的鼠标

    以百度首页设置为例,使用「move_to_element」的方法,鼠标即可悬停于元素设置,效果如图 6.5 所示,代码如下

    6.2.2 Select 操作

    在自动化测试过程中经常会碰到需要定位处理页面的 Select 元素,而 Selenium 提供了处理 Select 元素的方法

    Web 页面中经常会遇到下拉框选项,Select 模块提供了对标准 Select 下拉框的多种操作方法。打开百度,单击「设置 → 搜索设置,会出现一个 Select 下拉框,如图 6.6 所示。Select 元素的 HTML 代码如图 6.7 所示


    图 6.6


    图 6.7

    接下来介绍 3 种选择 Select 元素的值的方法

    (1)通过「select_by_index」方式获取下拉框选项,代码如下

    执行效果如图 6.8 所示,选择了选项「每页显示 20 条


    图 6.8

    (2)通过「select_by_value」方式获取下拉框选项,代码如下

    (3)用「select_by_visible_text」方式获取下拉框选项,在本例中「visible text」即为「每页显示 10 条「每页显示 20 条」和「每页显示 50 条,如图 6.9 所示


    图 6.9

    代码如下

    以上用封装好的 Select 方法对下拉框进行操作。对返回选项(options)的信息,也提供了 3 种常用的方法

    (1)options,返回 Select 所有的选项,代码如下

    结果如图 6.10 所示,控制台打印了下拉框中所有的选项


    图 6.10

    (2)all_selected_options,返回下拉框中已经选中的选项,代码如下

    以上代码返回的结果如图 6.11 所示,控制台打印第 2 项


    图 6.11

    (3)first_selected_option,返回第一个被选中的选项,示例代码如下

    运行结果如图 6.12 所示,控制台打印了第一次选中的选项


    图 6.12

    6.2.5 常用的鼠标事件

    在自动化测试过程中,经常要和鼠标事件打交道。除常用的鼠标单击操作外,还有以下几种操作

    · context_click,鼠标右击操作

    · double_click,鼠标双击操作

    · drag_and_drop,鼠标拖曳操作

    · move_to_element,鼠标悬停操作

    接下来,列举鼠标右击操作和鼠标双击操作两个实例

    (1)鼠标右击操作,实现右击百度首页「新闻」超链接。代码如下

    运行后,效果如图 6.17 所示


    图 6.17

    (2)鼠标双击操作,实现双击百度首页「新闻」超链接。代码如下

    6.2.6 常用的键盘事件

    经过总结,以下为自动化测试中常用的键盘事件

    · Keys.BACK_SPACE:删除键

    · Keys.SPACE:空格键

    · Keys.TAB:Tab 键

    · Keys.ESCAPE:回退键

    · Keys.ENTER:回车键

    · Keys.CONTROL,'a':组合键 Ctrl + A

    · Keys.CONTROL,'x':组合键 Ctrl + X

    · Keys.CONTROL,'v':组合键 Ctrl + V

    · Keys.CONTROL,'c':组合键 Ctrl + C

    · Keys.F1:F1 键

    · Keys.F12:F12 键

    用法举例:实现在百度搜索框输入文本「SeleniumTest」并删除输入的最后一个字符,代码如下

    注意:最后两行也可以进行合并,写法如下

    # coding=utf-8
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from time import sleep
    
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get('http://www.baidu.com')
    sleep(2)
    element = driver.find_element_by_id('kw')
    element.send_keys(u'自动化测试')
    sleep(2)
    element.send_keys(Keys.CONTROL + 'a')

    参考资料:https://blog.csdn.net/qq_27378621/article/details/85236457
    部分内容来自于学习编程期间收集于网络的免费分享资源和工作后购买的付费内容。
  • 相关阅读:
    QTreeWidgetItem清空子节点
    qt no doubments matching "ui..h" could be found
    Qt 调试信息、打印信息、输出到文本
    QLayout及其子类 清除添加的widget
    同一个电脑安装两个jdk版本
    hive javaapi 002
    ActiveMQ之spring集成消息转换器MessageConverter
    install Maven
    install apache-activemq
    MySQL 5.7.9版本sql_mode=only_full_group_by问题
  • 原文地址:https://www.cnblogs.com/MarlonKang/p/13673439.html
Copyright © 2011-2022 走看看