Selenium 操作指南:鼠标点击和键盘输入高级技巧

在自动化测试或网页操作中,精确地模拟鼠标点击和键盘输入是至关重要的。Selenium 提供了一个强大的工具------ActionChains 类,它允许用户以编程方式执行复杂的鼠标和键盘操作。本文将深入探讨如何利用 Selenium 的 ActionChains 类来执行鼠标单击、双击、右键点击和键盘输入,包括一些组合键的应用。

python 复制代码
#!/usr/bin/python3
# coding=utf-8
"""
@author: Jeffky
@file: demo13.py
@time: 2024-6-19 9:23
"""
from selenium import webdriver
from time import sleep

from selenium.webdriver import ActionChains, Keys
from selenium.webdriver.common.by import By


class TestCase(object):

    def __init__(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()


    def test_mouse(self):
        self.driver.get('https://sahitest.com/demo/clicks.htm')
        # 双击
        btn = self.driver.find_element(By.XPATH,'/html/body/form/input[2]')
        ActionChains(self.driver).double_click(btn).perform()

        sleep(2)

        # 单击
        btn = self.driver.find_element(By.XPATH,'/html/body/form/input[3]')
        ActionChains(self.driver).click(btn).perform()

        sleep(2)

        # 点击鼠标右键
        btn = self.driver.find_element(By.XPATH,'/html/body/form/input[4]')
        ActionChains(self.driver).context_click(btn).perform()

        sleep(5)

    def test_key(self):
        self.driver.get('https://www.baidu.com/')
        kw = self.driver.find_element(By.ID,'kw')
        kw.send_keys('selenium')
        kw.send_keys(Keys.CONTROL,'a')
        sleep(2)
        kw.send_keys(Keys.CONTROL,'x')
        sleep(2)
        kw.send_keys(Keys.CONTROL,'v')
        sleep(5)
    def test_move(self):
        self.driver.get('https://www.baidu.com/')
        e = self.driver.find_element(By.LINK_TEXT,'新闻')
        print(e)
        # ActionChains(self.driver).move_to_element(e).perform()
        ActionChains(self.driver).move_to_element(e).click(e).perform()
        sleep(5)
if __name__ == '__main__':
    case = TestCase()
    # case.test_mouse()
    # case.test_key()
    case.test_move()

鼠标操作

1. 单击操作

单击是最常用的鼠标操作之一,可以通过click()方法实现。例如,要单击一个按钮,可以先定位到该按钮,然后调用click()方法。

python 复制代码
button = driver.find_element(By.ID, 'myButton')
ActionChains(driver).click(button).perform()

2. 双击操作

双击操作可以通过double_click()方法实现。与单击类似,先定位元素然后执行双击。

python 复制代码
btn = driver.find_element(By.XPATH, '/html/body/form/input[2]')
ActionChains(driver).double_click(btn).perform()

3. 右键点击

右键点击可以通过context_click()方法实现。这对于触发右键菜单特别有用。

python 复制代码
btn = driver.find_element(By.XPATH, '/html/body/form/input[4]')
ActionChains(driver).context_click(btn).perform()

键盘操作

1. 基本键盘输入

使用send_keys()方法可以模拟键盘输入。这在填写表单或在搜索框中输入文本时非常有用。

python 复制代码
inputField = driver.find_element(By.ID, 'searchBox')
inputField.send_keys("Selenium")

2. 键盘组合键

send_keys()方法还可以用来模拟组合键,例如 Ctrl+A、Ctrl+C 和 Ctrl+V 等。

python 复制代码
inputField = driver.find_element(By.ID, 'kw')
inputField.send_keys("selenium")
inputField.send_keys(Keys.CONTROL, 'a')  # 选中所有文字
inputField.send_keys(Keys.CONTROL, 'c')  # 复制
inputField.send_keys(Keys.CONTROL, 'v')  # 粘贴

高级应用

结合鼠标移动和点击,可以模拟更复杂的用户交互,如悬停效果。

python 复制代码
elementToHover = driver.find_element(By.LINK_TEXT, '新闻')
ActionChains(driver).move_to_element(elementToHover).click().perform()

通过上述技巧,你可以有效地使用 Selenium 进行自动化测试或网页操作,模拟几乎任何用户交互。

事件驱动编程与Selenium

在深入了解 Selenium 中的鼠标和键盘事件处理之前,值得从事件驱动编程的角度来理解这些操作的重要性。事件驱动编程是一种编程范式,其中流程的推进是由事件的发生决定的。在图形用户界面(GUIs)中,事件如鼠标点击、键盘按键等是常见的事件类型,它们是用户交互的直接结果。

Selenium 通过模拟这些底层事件,使得自动化测试可以像真实用户一样与网页交互。这种交互模拟让用户能够验证页面的用户界面(UI)行为是否符合预期,例如确认点击按钮后是否会打开正确的对话框,或者验证输入框是否能够正确处理复制粘贴操作。

1. 事件分发机制

当使用 Selenium 进行自动化测试时,它通过WebDriver协议与浏览器通信。WebDriver 协议定义了如何发送命令(如点击或发送按键)到浏览器,并如何处理浏览器的响应。这包括了事件的创建、分发和处理。

  • 事件的创建 :通过调用 ActionChains 类中的方法(如 click(), send_keys() 等),Selenium 会在后台创建相应的事件对象。

  • 事件的分发:创建的事件随后被分发到指定的Web元素。这一过程是通过WebDriver与浏览器之间的通信实现的,确保事件被准确投递到页面上的指定元素。

  • 事件的处理:最终,浏览器接收到事件并按照其内建的事件处理机制进行处理,就像真实的用户操作一样。

2. 异常处理

在自动化测试过程中,正确处理可能发生的异常至关重要。例如,如果尝试对不存在的元素执行操作,Selenium 会抛出 NoSuchElementException。能够优雅地处理这些异常对于编写可靠的测试脚本非常重要。

3. 同步问题

由于 Web 页面的动态性,确保测试脚本在继续之前等待元素加载是很重要的。Selenium 提供了多种等待机制,如隐式等待和显式等待,以确保元素在执行操作之前是可交互的。

python 复制代码
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "myButton")))
ActionChains(driver).move_to_element(element).click().perform()

总结

通过 Selenium 的 ActionChains 类,测试人员可以灵活地模拟各种鼠标和键盘事件,以验证Web应用的行为。理解事件驱动编程的基本概念有助于更有效地使用这些工具,而异常处理和同步机制的合理运用则能确保测试脚本的健壮性和可靠性。借助这些高级技巧,自动化测试不仅能模拟简单操作,还能处理复杂的用户交互场景,从而提高测试覆盖率和准确性。

相关推荐
老大白菜22 分钟前
Python 爬虫技术指南
python
古希腊掌管学习的神2 小时前
[搜广推]王树森推荐系统——矩阵补充&最近邻查找
python·算法·机器学习·矩阵
LucianaiB3 小时前
探索CSDN博客数据:使用Python爬虫技术
开发语言·爬虫·python
PieroPc5 小时前
Python 写的 智慧记 进销存 辅助 程序 导入导出 excel 可打印
开发语言·python·excel
梧桐树04299 小时前
python常用内建模块:collections
python
Dream_Snowar9 小时前
速通Python 第三节
开发语言·python
蓝天星空10 小时前
Python调用open ai接口
人工智能·python
jasmine s10 小时前
Pandas
开发语言·python
郭wes代码10 小时前
Cmd命令大全(万字详细版)
python·算法·小程序
leaf_leaves_leaf10 小时前
win11用一条命令给anaconda环境安装GPU版本pytorch,并检查是否为GPU版本
人工智能·pytorch·python