如何使用python在Selenium中执行拖放操作?

我们可以借助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()
猜你喜欢