[数据] 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()方法时,才会按时间顺序会依次执行。