本文介绍: 本篇博客将深入解析Selenium中的动作链(ActionChains),重点介绍了各种常用的操作,如点击、拖拽、切换等。动作链是一种将多个操作组合在一起执行的强大工具,能够模拟真实用户的交互行为。通过学习本文,您将掌握如何在Selenium中使用动作链来实现精确的操作,提高自动化测试的准确性和稳定性。
背景:
一些交互动作都是针对某个节点执行的。比如,对于输入框,我们就调用它的输入文字和清空文字方法;对于按钮,就调用它的点击方法。其实,还有另外一些操作,它们没有特定的执行对象,比如鼠标拖曳、键盘按键等,这些动作用另一种方式来执行,那就是动作链。
基础函数知识:
driver = webdriver.Chrome()
actions = ActionChains(driver)
click()
点一下context_click()
: 执行右键点击操作。double_click()
: 执行双击操作。click_and_hold()
: 点击并按住不放。release()
方法来模拟释放鼠标按钮
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()
drag_and_drop(source,target)
将一个元素拖拽到另一个元素的位置上drag_and_drop_by_offset(source, xoffset, yoffset)
: 将源元素拖动到指定的偏移位置上。drag_and_drop_by(source, target)
: 将源元素拖动到目标元素的中心位置上。
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进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。