selenium之鼠标操作

首先导入ActionChains类,该类可以完成鼠标移动,鼠标点击事件,键盘输入、内容菜单交互等交互行为。

from selenium.webdriver.common.action_chains import ActionChains

操作语法:

        第一步:初始化ActionChains类(动作链条):action = ActionChains(driver)

        第二步:找到要操作的元素:element = driver.find_element(by='xx', value='xx')

        第三步:调用鼠标操作方法:action.move_to_element(element)

        第四部:执行鼠标操作方法:action.perform()

在实际调用ActionChains类的方法时,不会立即执行鼠标操作,而是会将所有的操作顺序存放在一个队列里,最终调用perform()方法,队列中的操作会依次进行。

( ActionChains 类提供了对动作的链式操作,也就是可以生成一个操作的队列,将复杂的操作过程分解成单个操作,然后组合起来一次性执行)

(在 ActionChains 类中所有提供的鼠标事件方法,在调用的时候所有的行为都存储在 ActionChains 对象中,而 perform() 方法就是真正去执行所有的鼠标事件。)

常用方法:

1、点击鼠标左键----click(element)

selenium之鼠标操作_第1张图片

action = ActionChains(driver)
element = driver.find_element('class name', 'hot-refresh-text')
action.click(element).perform()

简写为:

driver.find_element('class name', 'hot-refresh-text').click()

2、鼠标移动到元素上-------move_to_element(element)

执行操作:

ActionChains(driver).move_to_element(driver.find_element('id', 's-usersetting-top')).perform()
# 移动鼠标到元素上

3、点击鼠标左键,不松开----click_and_hold(element)

selenium之鼠标操作_第2张图片

执行操作:

action = ActionChains(driver)
element = driver.find_element('class name', 'hot-refresh-text')
action.click_and_hold(element).perform()

 4、点击鼠标右键----context_click(element)

        对于点击鼠标右键,如果弹出的是浏览器默认的菜单,Selenium没有提供操作菜单选项的方法; 如果是自定义的右键菜单,则可以通过元素定位来操作菜单中的选项。

action = ActionChains(driver)
element = driver.find_element('xx', 'xx')
action.context_click(element).perform()

5、双击鼠标左键----double_click(element)

action = ActionChains(driver)
element = driver.find_element('xx', 'xx')
action.double_click(element).perform()

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

        说明:模拟鼠标拖动动作,选定拖动源元素释放到目标元素后鼠标松开。

  • 初始化类:action = ActionChains(driver)
  • 源元素:source = driver.find_element(by='xx', value='xx')
  • 目标元素 :target = driver.find_element(by='xx', value='xx')
  • 调用方法 :action.drag_and_drop(source, target).perform()
action = ActionChains(driver)
source = driver.find_element('xx', 'xx')
target = driver.find_element('xx', 'xx')
action.drag_and_drop(source, target).perform()

7、执行鼠标操作-----perform()

其他方法:

1、清除已在队列中的鼠标操作命令----reset_actions()

2、拖拽到某个坐标后松开----drag_and_drop_by_offset(source, x, y) 

        源元素:source = driver.find_element(by='xx', value='xx')

3、按下某个键盘上的键----key_down(value, element)

4、松开某个键----key_down(value, element)

5、鼠标从当前位置,移动到某个坐标----move_by_offset(x, y)

6、鼠标移动到距离某个元素多少距离的位置----move_to_element_with_offset(element, x, y)

7、在元素上释放按住的鼠标按钮----release(element)

        说明:在某个元素位置松开鼠标左键,与 click_and_hold(element) 点击鼠标左键不松开结合使用。(如果有鼠标按下的操作,那么需要通过 release() 方法释放鼠标)

8、暂停操作-----pause(seconds)

        结合使用,比如:鼠标移动到某元素上悬停的时间。(暂停所有动作,相当于等待,用于链式操作过程中的等待)

你可能感兴趣的:(UI自动化,selenium,python,测试工具)