本文介绍: 本篇博客将深入解析Selenium中的动作链(ActionChains),重点介绍了各种常用操作,如点击拖拽切换等。动作链是一种将多个操作组合在一起执行的强大工具能够模拟真实用户交互行为通过学习本文,您将掌握如何在Selenium使用动作链来实现精确的操作,提高自动化测试的准确性和稳定性。

背景

一些交互动作都是针对某个节点执行的。比如,对于输入框我们调用它的输入文字清空文字方法;对于按钮,就调用它的点击方法。其实,还有另外一些操作,它们没有特定的执行对象比如鼠标拖曳、键盘按键等,这些动作用另一种方式执行,那就是动作链。

基础函数知识

创建浏览器实例动作对象

driver = webdriver.Chrome()
actions = ActionChains(driver)

点击事件

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get('https://www.example.com')
element = driver.find_element_by_xpath("//xpath_of_element")
actions = ActionChains(driver)
actions.click_and_hold(element).perform()  # 按住元素
actions.release().perform()  # 松开元素

driver.quit()

前进和后退:

移动事件

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
driver.get('https://www.example.com')
element = driver.find_element_by_xpath("//xpath_of_element")
actions = ActionChains(driver)
actions.move_to_element(element).pause(2).click().perform()  # 移动到元素,暂停 2 秒,然后点击

driver.quit()

拖拽事件:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
driver.get('https://www.example.com')

source_element = driver.find_element_by_xpath("//xpath_of_source_element")
target_element = driver.find_element_by_xpath("//xpath_of_target_element")

actions = ActionChains(driver)
actions.drag_and_drop(source_element, target_element).perform()  # 拖动源元素到目标元素

driver.quit()

切换指定页面


实战案例

实战一:

如果定位的标签存在iframe表示的子页面中,需要向将浏览器切换iframe里面

实现拖拽效果

在这里插入图片描述

在这里插入图片描述

from selenium.webdriver import ActionChains
from selenium import webdriver
from time import sleep

path = r'D:Downloadsxxchromedriver-win64chromedriver.exe'
bro = webdriver.Chrome(executable_path=path)
bro.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
sleep(1)
# 处理使用如下指定操作
bro.switch_to.frame('iframeResult')
div_tag = bro.find_element_by_id('draggable')
# 实例一个动作链对象且将该对象绑定指定浏览器
action = ActionChains(bro)
action.click_and_hold(div_tag)  # 对指定标签实现点击且长按操作
for i in range(5):
    action.move_by_offset(10, 10).perform()  # perform让动作链立即执行
    sleep(0.5)
sleep(3)
bro.quit()
实战二:

类似实现点选验证码

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get('https://www.example.com')
element = driver.find_element_by_xpath("//xpath_of_element")
actions = ActionChains(driver)
actions.move_to_element_with_offset(element, xoffset, yoffset).perform()  # 将鼠标移动到指定元素的偏移位置上
实战三:

实现前进和后退网页

#模拟浏览器的前进后退
from selenium import webdriver
import time

browser = webdriver.Chrome(r'./chromedriver')
browser.get('https://www.baidu.com')
browser.get('https://www.taobao.com')

browser.back()
time.sleep(2)
browser.forward()
time.sleep(2)

browser.close()

原文地址:https://blog.csdn.net/ak_bingbing/article/details/134613946

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_38584.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注