• 惊艳的Selenium技巧:探索基础和动作链的奇妙世界


    1.Selenium简介

    selenium可以帮助我们便捷的获取网站中动态加载的数据,也可以便捷实现模拟登录;
    selenium是基于浏览器自动化的一个模块,使用可以操作浏览器来帮我们实现一些自动化的操作!
    Selenium 是一个广泛使用的自动化测试工具,用于测试 Web 应用程序的功能和兼容性。它提供了一组功能强大的工具和库,可以模拟用户在浏览器中的操作,并对应用程序进行自动化测试。

    以下是 Selenium 的一些重要特点和组成部分:

    1. 多浏览器支持:Selenium 支持多种主流浏览器,包括 Chrome、Firefox、Safari、Edge 等。这意味着您可以使用相同的测试脚本在不同的浏览器中执行测试,以验证应用程序的兼容性和一致性。

    2. 多语言支持:Selenium 提供了多种编程语言的支持,包括 Java、Python、C#、JavaScript 等。这使得开发人员可以使用自己熟悉的语言编写测试脚本,并灵活地与其他工具和框架进行集成。

    3. 元素定位:Selenium 提供了丰富的元素定位方法,可以通过 ID、类名、标签名、XPath、CSS 选择器等方式定位页面上的元素。这使得测试人员可以准确地操作和验证页面上的各个元素。

    4. 页面交互和操作:Selenium 可以模拟用户在浏览器中的各种操作,如点击、输入、选择、提交表单等。这使得测试人员可以编写测试脚本来模拟用户在应用程序中的交互,以验证应用程序的功能和用户体验。

    5. 并发测试:Selenium 支持并发测试,可以同时运行多个测试用例或测试套件,提高测试效率和速度。

    6. 浏览器控制:Selenium 可以完全控制浏览器的行为,如打开新窗口、切换窗口、处理弹窗、处理 Cookies 等。这使得测试人员可以模拟各种场景和情况,进行更全面和复杂的测试。

    总体而言,Selenium 是一个功能强大、灵活且广泛使用的自动化测试工具,可以帮助开发人员和测试人员进行 Web 应用程序的自动化测试。无论是测试 Web 应用程序的功能、兼容性还是进行数据采集和挖掘,Selenium 都是一个重要的工具。

    2.Selenium初试

    1.环境安装

    pip install selenium
    
    • 1

    2.下载浏览器驱动程序

    下载驱动程序一定要和浏览器版本匹配!

    驱动器下载路径:https://chromedriver.storage.googleapis.com/index.html

    3.小试牛刀

    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.common.by import By
    from time import sleep
    # 环境搭建
    from selenium.webdriver import Chrome
    # 创建一个Service对象
    from webdriver_manager.chrome import ChromeDriverManager
    service = Service(ChromeDriverManager().install())
    web = Chrome(service=service)
    # 向淘宝发送一个请求
    web.get("https://www.taobao.com")
    # 执行一组js程序 向下滚动
    web.execute_script('window.scrollTo(0,document.body.scrollHeight)')
    # 实现标签定位
    search_input = web.find_element(By.ID, 'q')
    # 标签的交互
    search_input.send_keys('区块链入门')
    # 定位搜索按钮
    btn = web.find_element(By.CLASS_NAME, 'btn-search')
    # 点击按钮
    btn.click()
    web.get('http://www.baidu.com')
    sleep(2)
    # 回退
    web.back()
    sleep(2)
    web.forward()
    sleep(5)
    web.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

    编写基于浏览器自动化的操作代码:

    ​ --发起请求:get(url)

    ​ --标签定位:find系列的方法

    ​ --标签交互:send_keys(‘xxx’)

    ​ --执行js程序:execute_script(‘jsCode’)

    ​ --前进,后退:forward()、back()

    ​ --关闭浏览器:quit()

    3.iframe处理+动作链

    当页面中存在 iframe 时,需要先切换到 iframe 中才能对其中的元素进行操作。
    当处理 iframe(内嵌框架)和执行动作链(ActionChains)时,可以按照以下步骤在 Python 中使用 Selenium:

    1. 处理 iframe:
      在 Selenium 中,需要先切换到 iframe 才能对其中的元素进行操作。可以使用 switch_to.frame() 方法来切换到指定的 iframe。例如:
       from selenium import webdriver
       driver = webdriver.Chrome()
       iframe_element = driver.find_element_by_tag_name("iframe")
       driver.switch_to.frame(iframe_element)
    
    • 1
    • 2
    • 3
    • 4

    在切换到 iframe 后,可以使用常规的 Selenium 方法来定位和操作 iframe 中的元素。

    1. 执行动作链:动作链(ActionChains)是一系列连续的动作,可以模拟用户在页面上的复杂操作,如鼠标移动、拖拽、键盘操作等。Selenium 提供了 ActionChains 类来支持动作链的执行。动作链(ActionChains)是一系列连续的动作,可以模拟用户在页面上的复杂操作,如鼠标移动、拖拽、键盘操作等。在 Python 中,可以使用 ActionChains 类来执行动作链。以下是一个示例,展示了如何使用动作链来模拟鼠标移动和点击操作:
    from selenium import webdriver
       from selenium.webdriver.common.action_chains import ActionChains
    driver = webdriver.Chrome()
       actions = ActionChains(driver)
       element = driver.find_element_by_id("elementId")
       actions.move_to_element(element).click().perform()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在上述示例中,首先导入 webdriverActionChains 类。然后,创建一个 ActionChains 对象,并使用 move_to_element() 方法将鼠标移动到指定元素上,接着使用 click() 方法模拟点击操作,最后使用 perform() 方法执行动作链。
    根据具体需求,可以使用其他的 ActionChains 方法,如 drag_and_drop()send_keys()double_click() 等来执行不同类型的动作。

  • 相关阅读:
    element的表单校验证件号规则以及输入“无”的情况校验通过
    tf.ones_initializer
    docker 部署vue
    【教程】 iOS混淆加固原理篇
    ansible学习笔记【14】lvg模块、lvol模块
    springboot发送邮件
    sql server笔记1(表的定义)
    数据库MYSQL
    如何实现网站首页变为黑白色?
    JavaScript变量和作用域简介
  • 原文地址:https://blog.csdn.net/qq_51447436/article/details/133966052