我们可以借助Action Chains类在Selenium中执行拖放动作。这些类通常用于自动化交互,例如上下文菜单单击,鼠标按钮操作,按键和鼠标移动。
这些类型的操作主要在复杂的场景中很常见,例如拖放和将鼠标悬停在页面上的元素上。高级脚本利用了Action Chains类的方法。我们可以借助Selenium中的“动作链”来操纵DOM。
动作链对象以队列的形式实现ActionChains,然后执行该perform()
方法。在调用该方法时perform()
,将执行动作链上的所有动作。
下面列出了创建动作链对象的方法-
首先,我们需要导入Action Chain类,然后将驱动程序作为参数传递给它。
现在,动作链的所有操作都可以在该对象的帮助下完成。
用于创建动作链对象的语法-
从硒导入webdriver
# import Action chains from selenium.webdriver import ActionChains # create webdriver object driver = webdriver.Firefox() # create action chain object action = ActionChains(driver)
创建动作链对象后,我们可以像排队的链一样一个接一个地执行许多操作。
drag_and_drop()-此方法执行在源元素上按住鼠标左键的操作。然后移动到目标元素,最后释放鼠标按钮。
drag_and_drop(args1, args2)
其中,args1是在其上执行鼠标按下操作的元素。
args2是在其上进行鼠标向上操作的元素。
#source source = driver.find_element_by_link_text("Nhooo") #target target = driver.find_element_by_link_text("Selenium") #action chain object action = ActionChains(driver) # drag and drop operation action.drag_and_drop(source, target)
拖放操作的代码实现。
from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdriver.common.keys import Keys #browser exposes an executable file #Through Selenium test we will invoke the executable file which will then #invoke actual browser driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe") # to maximize the browser window driver.maximize_window() #get method to launch the URL driver.get("https://jqueryui.com/droppable/") #to refresh the browser driver.refresh() # identifying the source and target elements source= driver.find_element_by_id("draggable"); target= driver.find_element_by_id("droppable"); # action chain object creation action = ActionChains(driver) # drag and drop operation and the perform action.drag_and_drop(source, target).perform() driver.close()