• selenium UI使用小技巧集合


    selenium这个工具就不用我多介绍了吧,咱们已经说过很多很多次咯,所以就直接上主题:

    窗口截图

    webdriver 提供了 get_screenshot_as_file()函数来截取当前窗口

    from selenium import webdriver
    from time import sleep
    
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    
    # 截屏,截取整个页面
    driver.get_screenshot_as_file("./all.png")
    # 截屏,截取单个元素
    ele = driver.find_element_by_id('kw')
    ele.screenshot("./ele.png")
    
    driver.quit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    警告框处理

    在WebDriver中处理JavaScript所生成的alert、confirm以及prompt十分简单,具体做法是使用 switch_to.alert 方法定位到 alert/confirm/prompt,然后使用text/accept/dismiss/ send_keys等方法进行操作

    • text:返回 alert/confirm/prompt 中的文字信息
    • accept():接受现有警告框
    • dismiss():取消现有警告框
    • send_keys(“haha”):发送文本至警告框
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()
    driver.implicitly_wait(5)
    driver.get("D:\\test\script\study\seleniumStu\day6\警告框.html")
    
    # # 触发对话框
    # driver.find_element_by_id("bu1").click()
    # al = driver.switch_to.alert
    # time.sleep(3)
    # al.accept()  # 确认对话框
    # # 触发确认框
    # driver.find_element_by_id("bu2").click()
    # al = driver.switch_to.alert
    # al.accept()  # 确认对话框
    # driver.find_element_by_id("bu2").click()
    # al.dismiss()  # 取消对话框
    # 触发提示框
    driver.find_element_by_id("bu3").click()
    al = driver.switch_to.alert
    al.send_keys("口罩太贵了")
    al.accept()  # 确认对话框
    time.sleep(3)
    driver.quit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    鼠标事件

    用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽等等。而selenium给我们提供了一个类来处理这类事件——ActionChains

    ActionChains 类提供了鼠标操作的常用方法:

    • perform():执行操作
    • context_click():右击;
    • double_click():双击;
    • drag_and_drop():拖动;
    • move_to_element():鼠标悬停。
    from selenium import webdriver
    # 引入 ActionChains 类
    from selenium.webdriver.common.action_chains import ActionChains
    
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.cn")
    
    # 定位到要悬停的元素
    above = driver.find_element_by_link_text("设置")
    # 对定位到的元素执行鼠标悬停操作
    ActionChains(driver).move_to_element(above).perform()
    
    driver.quit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    键盘事件

    Keys()类提供了键盘上几乎所有按键的方法。前面了解到, send_keys()方法可以用来模拟键盘输入, 除此 之外, 我们还可以用它来输入键盘上的按键, 甚至是组合键, 如 Ctrl+A、 Ctrl+C 等

    from selenium import webdriver
    # 引入 Keys 模块
    from selenium.webdriver.common.keys import Keys
    
    driver = webdriver.Chrome()
    driver.get("http://www.baidu.com")
    
    # 输入框输入内容
    driver.find_element_by_id("kw").send_keys("seleniumm")
    
    # 删除多输入的一个 m
    driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
    
    # 输入空格键+“教程”
    driver.find_element_by_id("kw").send_keys(Keys.SPACE)
    driver.find_element_by_id("kw").send_keys("教程")
    
    # ctrl+a 全选输入框内容
    driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a')
    
    # ctrl+x 剪切输入框内容
    driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x')
    
    # ctrl+v 粘贴内容到输入框
    driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'v')
    
    # 通过回车键来代替单击操作
    driver.find_element_by_id("su").send_keys(Keys.ENTER)
    
    driver.quit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    以下为常用的键盘操作:

    • 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)
    • send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)
    • send_keys(Keys.CONTROL,‘v’) 粘贴(Ctrl+V)
    • send_keys(Keys.F1) 键盘 F1
    • ……
    • send_keys(Keys.F12) 键盘 F12

    iframe切换

    iframe,又叫浮动帧标记,是内嵌的网页元素,可以将一个html文件嵌入到另一个html文件中显示

    对iframe进行操作,需要用到以下三种方法:

    switch_to_iframe() 切换到iframe上(未来会被删除,不建议使用)

    switch_to.frame() 切换到iframe上

    switch_to.default_content() 切换回原主页面

    通过如下方式进行切换操作

    #定位到iframe

    iframe=driver.find_element_by_id(“x-URS-iframe”)

    #切换到iframe

    driver.switch_to_frame(iframe)

    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome("D:\\tool\selenium\chromedriver.exe")
    # 隐式等待
    driver.implicitly_wait(5)
    driver.get("D:\\test\script\study\seleniumStu\day3\\test.html")
    
    """
    对iframe进行操作,需要用到以下三种方法:
    switch_to_iframe()                       切换到iframe上
    switch_to.frame()                         切换到iframe上
    switch_to.default_content()         切换回原主页面
    """
    iframe = driver.find_element_by_id("f91fb5bc-bd95-45bf-bd77-977a2afbd25f")
    driver.switch_to.frame(iframe)
    driver.find_element_by_id("e4890ded-16e1-4445-bf8e-7f655793f332").send_keys("haha")
    
    time.sleep(5)
    driver.quit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    多标签页切换

    在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作。WebDriver提供了以下方法

    current_window_handle:获得当前标签页句柄

    window_handles:返回所有便签页的句柄

    switch_to.window(标签页句柄):切换到对应的标签页

    关闭标签页使用 close 方法

    from selenium import webdriver
    
    # 创建浏览器驱动对象
    driver = webdriver.Chrome()
    # 访问网址
    driver.get("http://www.baidu.com")
    
    # 找到搜索按钮
    input_element = driver.find_element_by_id("kw")
    # 输入搜索内容
    input_element.send_keys("松勤\n")
    
    # 点击松勤教育官网
    driver.find_element_by_css_selector("#\34  > h3 > a > em").click()
    
    # 获得当前所有打开的窗口的句柄
    all_handles = driver.window_handles
    
    for handle in all_handles:
        driver.switch_to.window(handle)
        print(driver.title)
    
    # 退出浏览器
    driver.quit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    补充

    #将页面滚动条拖到底部

    js=“var q=document.documentElement.scrollTop=100000”

    driver.execute_script(js)

    time.sleep(3)

    #将滚动条移动到页面的顶部

    js=“var q=document.documentElement.scrollTop=0”

    driver.execute_script(js)

    time.sleep(3)

    #将页面滚动条移动到页面任意位置,改变等于号后的数值即可

    js=“var q=document.documentElement.scrollTop=50”

    driver.execute_script(js)

    如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以加入我们的QQ群:746506216,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。


    资源分享

    下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    基于MDK-Keil环境如何把STM32程序直接下载到SRAM运行
    SpringBoot集成-阿里云对象存储OSS
    【附源码】Python计算机毕业设计汽车交易平台
    C#基础|OOP学习总结、优质的OOP程序有啥特点。
    如何寻找优质的谷歌seo优化公司来提升你的外贸网站排名
    【Hot100】LeetCode—84. 柱状图中最大的矩形
    代码随想录算法训练营第三十一天| 455 分发饼干 376 摆动序列 53 最大子数组和
    Hive 表 DML 操作——第2关:Select 操作
    毕业设计-深度学习身份证号码检测识别-python-opencv
    Android 内存泄漏分析思路和案例剖析
  • 原文地址:https://blog.csdn.net/m0_67695717/article/details/128133983