本文介绍了一种在网页自动化测试中遇到ActionChains的move_to_element方法无法按预期工作的问题及解决方案。通过使用JavaScript创建并触发鼠标移动事件,成功实现了元素定位与交互。
摘要生成于
,由 DeepSeek-R1 满血版支持,
最近使用ActionChains中的move_to_element发现没有达到预期效果
找了各种办法没有解决,最后我的解决方案是使用js里面的鼠标移动事件来实现,代码如下。
ele = driver.find_element_by_xpath("//div[@id=\"myMenu\"]/div[@class=\"title\"]/div[@class=\"show-w\"]/descendant::label[text()=\"\"]")
exjs = "var evObj=document.createEvent('MouseEvents');" + "evObj.initMouseEvent(\"mouseover\",true,false,window,0,0,0,0,0,false,false,false,false,0,null);" + "arguments[0].dispatchEvent(evObj);"
driver.execute_script(exjs,ele)
要实现拖拽印章的动作,我引入ActionChains类模拟鼠标拖动,但却发现没有效果
#通过指定坐标来拖动,没有效果
drag_and_drop_by_offset().perform()
#通过source和target指定两个位置拖动,没有效果
drag_and_drop().perform()
#然后还试了分步拖动,还是没效果
click_and_hold().perform()
move_to_element().perform()
release().perform()
元素是可以定位到的
情景:web自动化模拟拖拽元素,从一个位置拖动到另一个画布canvas,使用ActionChains的方法没有实现,后来也换了pywin32库也没有实现最后找到pyautogui库 ,不过调试坐标点还是很麻烦,只能说是解决了问题。听说opencv处理坐标很方便,还没有使用,有兴趣可以试试。下面是当时用的代码,直接贴下面:
dragged = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#centerControls >
用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽等等。而selenium给我们提供了一个类来处理这类事件——ActionChains
selenium.webdriver.common.action_chains.ActionChains(driver)
这个类基本能够满足我们所有对鼠标操作的需求。
1.ActionChains基本用法
首先需要了解ActionChains的执行原理,当你调用ActionChains的方法时,不会立即执行,而是会将所
from selenium import webdriver
from selenium.webdriver import ActionChains
options = webdriver.ChromeOptions()
options.add_argument('--disable-blink-features=AutomationControlled
总结一种情况
有时候模拟拖拽元素时,失败的原因不一定是我们的操作有问题,有可能和web页面的实现有关系。比如:我们一般实现拖拽的时候会使用:
ActionChains(webdriver).drag_and_drop_by_offset(button, x_location, y_location).perform()
button就是我们鼠标落下需要移动的元素,x,y就是坐标了。
在自...
是的,你可以使用 moveToElement 方法来移动鼠标到一个特定的元素上,而不会被外界打断。这个方法是 Selenium WebDriver 中的一个常用方法,用于在浏览器中执行鼠标操作。
你也可以使用 Actions 类来执行复杂的鼠标操作,比如拖拽、右键单击等。
from selenium.webdriver import ActionChains
actions = Acti...
在使用Python2.7+Selenium3.0.2+Firefox50.1时,鼠标事件ActionChains运行总是报错,报错信息如下:
C:\Python36\python3.exe C:/Users/root/PycharmProjects/untitled3/test170117.py
Traceback (most recent call last):
File "C:/Us...
在上一篇中简单介绍了如何查看webview和切换到webview的方法,可能第一次切换webview的时候会报错“Error: session not created exception: Chrome version must be >= XX.XXXXX”,遇到的朋友们不要怕,这个只是检测到chrome的版本号和chrome驱动没有对称。如果做过web自动化的朋友可能更加清楚,更换chrome和chrome驱动的版本号就行了
切换webview报错
我们在执行方法 _switch_to.conte