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/,
然后重定向到 https://practice.geeksforgeeks.org/
Selenium Python中的动作链方法
使用Action 链可以执行大量操作,例如单击、右键单击等。这里列出了Action 链中使用的重要方法。
Method | Description |
---|---|
click | Clicks an element. |
click_and_hold | Holds down the left mouse button on an element. |
context_click | Performs a context-click (right click) on an element. |
double_click | Double-clicks an element. |
drag_and_drop | Holds down the left mouse button on the source element, then moves to the target element and releases the mouse button. |
drag_and_drop_by_offset | Holds down the left mouse button on the source element, then moves to the target offset and releases the mouse button. |
key_down | Sends a key press only, without releasing it. |
key_up | Releases a modifier key. |
move_by_offset | Moving the mouse to an offset from current mouse position. |
move_to_element | Moving the mouse to the middle of an element. |
move_to_element_with_offset | Move the mouse by an offset of the specified element, Offsets are relative to the top-left corner of the element. |
perform | Performs all stored actions. |
pause | Pause all inputs for the specified duration in seconds |
release | Releasing a held mouse button on an element. |
reset_actions | Clears actions that are already stored locally and on the remote end |
send_keys | Sends keys to current focused element. |
在评论中写代码?请使用 ide.geeksforgeeks.org,生成链接并在此处分享链接。