selenium鼠标事件(单击/双击/右击/拖动)详细解说

[数据] 2024-10-03 圈点322

摘要:selenium鼠标事件(单击/双击/右击/拖动)详细解说,selenium鼠标事件用的是ActionChains,在调用它的时候,其实是不会立即执行,当你调用perform()方法时,才会按时间顺序会依次执行。

selenium鼠标事件(单击/双击/右击/拖动)详细解说,selenium鼠标事件用的是ActionChains,在调用它的时候,其实是不会立即执行,而是会将所有的操作按顺序存放在一个队列里,当你调用perform()方法时,才会按时间顺序会依次执行。


先引用ActionChains类:

from selenium.webdriver.common.action_chains import ActionChains


右击和双击示例:

rc = driver.find_element_by_id("rightclickid")
ActionChains(driver).context_click(rc).perform()
ActionChains(driver).double_click(rc).perform()


移动示例:

#定位元素的原位置
element = driver.find_element_by_name("source")
#定位元素要移动到的目标位置
target =  driver.find_element_by_name("target")
#执行元素的移动操作
ActionChains(driver).drag_and_drop(element, target).perform()



按组合键示例:

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

#新建标签页快捷键:ctrl + t
ActionChains(driver).key_down(Keys.CONTROL).send_keys("t").key_up(Keys.CONTROL).perform()

#关闭标签页:ctrl + w
ActionChains(browser).key_down(Keys.CONTROL).send_keys("w").key_up(Keys.CONTROL).perform()




ActionChains方法列表


click(on_element=None) ——单击鼠标左键


click_and_hold(on_element=None) ——点击鼠标左键,不松开


context_click(on_element=None) ——点击鼠标右键


double_click(on_element=None) ——双击鼠标左键


drag_and_drop(source, target) ——拖拽到某个元素然后松开


drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开


key_down(value, element=None) ——按下某个键盘上的键


key_up(value, element=None) ——松开某个键


move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标


move_to_element(to_element) ——鼠标移动到某个元素


move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置


perform() ——执行链中的所有动作


release(on_element=None) ——在某个元素位置松开鼠标左键


send_keys(*keys_to_send) ——发送某个键到当前焦点的元素


send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素



链式操作示例:

click_btn = driver.find_element_by_xpath('//input[@value="click me"]')  # 单击按钮
doubleclick_btn = driver.find_element_by_xpath('//input[@value="dbl click me"]')  # 双击按钮
rightclick_btn = driver.find_element_by_xpath('//input[@value="right click me"]')  # 右键单击按钮

ActionChains(driver).click(click_btn).double_click(doubleclick_btn).context_click(rightclick_btn).perform()  # 链式用法


点击被页面上其他元素遮住的控件

使用WebDriver点击界面上Button元素时,如果当前Button元素被界面上其他元素遮住了,或没出现在界面中(比如Button在页面底部,但是屏幕只能显示页面上半部分),使用默认的WebElement.Click()可能会触发不了Click事件。

需加上browser.execute_script(‘arguments[0].click()’, webElement);

示例:

ele1 = browser.find_element_by_id("search_one")
browser.execute_script('arguments[0].click()',ele1)


selenium鼠标事件(单击/双击/右击/拖动)详细解说,selenium鼠标事件用的是ActionChains,在调用它的时候,其实是不会立即执行,而是会将所有的操作按顺序存放在一个队列里,当你调用perform()方法时,才会按时间顺序会依次执行。

selenium  鼠标事件  actionchains  

感谢反馈,已提交成功,审核后即会显示