📜  Selenium Python中的动作链

📅  最后修改于: 2022-05-13 01:55:25.809000             🧑  作者: Mango

Selenium Python中的动作链

Selenium 的Python模块是为使用Python执行自动化测试而构建的。 ActionChains 是一种自动化低级交互的方法,例如鼠标移动、鼠标按钮操作、按键和上下文菜单交互。这对于执行更复杂的操作(例如悬停和拖放)很有用。高级脚本使用动作链方法,我们需要拖动元素,单击元素,本文围绕如何使用Selenium中的动作链操作 DOM 展开。我们已经通过示例详细介绍了所有方法。

动作链是在动作链对象的帮助下实现的,该对象将动作存储在队列中,当调用 perform() 时,执行排队的操作。

如何创建动作链对象?

要创建动作链的对象,请从文档中导入动作链类并将驱动程序作为关键参数传递。之后就可以使用这个对象来执行动作链的所有操作了。

# import webdriver
from selenium import webdriver
   
# import Action chains 
from selenium.webdriver.common.action_chains import ActionChains
   
# create webdriver object
driver = webdriver.Firefox()
   
# create action chain object
action = ActionChains(driver)
  

如何在Selenium中使用动作链?

在创建了一个动作链对象后,打开一个网页,并使用以下语法和示例执行各种其他方法。动作链可以以如下链模式使用 -

menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav # submenu1")
  
ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()

或者动作可以一个一个地排队,然后执行:

menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav # submenu1")
  
actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
actions.perform()

项目示例——

让我们尝试使用 https://www.geeksforgeeks.org/ 实现动作链,并尝试使用Selenium Python的各种方法。

# import webdriver
from selenium import webdriver
   
# import Action chains 
from selenium.webdriver.common.action_chains import ActionChains
   
# create webdriver object
driver = webdriver.Firefox()
   
# get geeksforgeeks.org
driver.get("https://www.geeksforgeeks.org/")
   
# get element 
element = driver.find_element_by_link_text("Courses")
   
# create action chain object
action = ActionChains(driver)
   
# click the item
action.click(on_element = element)
   
# perform the operation
action.perform()

上面的代码,首先打开 https://www.geeksforgeeks.org/ 然后点击页眉中的课程按钮,然后将浏览器自动重定向到 https://practice.geeksforgeeks.org/。
输出 -
第一个驱动程序打开 https://www.geeksforgeeks.org/,

动作链-Selenium-Python

然后重定向到 https://practice.geeksforgeeks.org/

点击元素方法-Selenium-Python

Selenium Python中的动作链方法

使用Action 链可以执行大量操作,例如单击、右键单击等。这里列出了Action 链中使用的重要方法。

MethodDescription
clickClicks an element.
click_and_holdHolds down the left mouse button on an element.
context_clickPerforms a context-click (right click) on an element.
double_clickDouble-clicks an element.
drag_and_dropHolds down the left mouse button on the source element, then moves to the target element and releases the mouse button.
drag_and_drop_by_offsetHolds down the left mouse button on the source element, then moves to the target offset and releases the mouse button.
key_downSends a key press only, without releasing it.
key_upReleases a modifier key.
move_by_offsetMoving the mouse to an offset from current mouse position.
move_to_elementMoving the mouse to the middle of an element.
move_to_element_with_offsetMove the mouse by an offset of the specified element, Offsets are relative to the top-left corner of the element.
performPerforms all stored actions.
pausePause all inputs for the specified duration in seconds
releaseReleasing a held mouse button on an element.
reset_actionsClears actions that are already stored locally and on the remote end
send_keysSends keys to current focused element.