Selenium 是一个用于自动化的独立的基于 Web 的工具。 它是任何人都可以使用的开源工具。
与Python语言结合使用该工具进行测试。 操作链是 Selenium 的基本组成部分,提供了一种管理低级交互的方法,例如按键、鼠标移动、鼠标按钮操作以及与上下文菜单的交互。
本篇文章介绍如何使用 Python 在 Selenium 中实现操作链。
当需要自动化高级脚本(其中我们需要单击或拖动任何元素)时,我们通常使用操作链。
动作链对象用于在 Python 中实现动作链。 动作链对象可以将所有动作存储在队列中,队列通过调用 perform()
函数来执行所有存储的操作。
如何在 Selenium Python 中创建一个简单的动作链对象
可以通过导入必要的模块并在 Python 代码中传递一些值来创建简单的 Action Chain 对象。
以下代码创建一个简单的操作链对象。
python
from selenium import webdriver #webdriver is imported from selenium
from selenium.webdriver.common.action_chains import ActionChains # ActionChains is imported from webdriver
driver = webdriver.Firefox() # a webdriver object is then created
action = ActionChains(driver) # An action chain object is finally created with the driver
- Action Chain 类首先从 selenium.webdriver 模块导入。
- 然后定义一个驱动程序。
- 然后,该驱动程序作为关键参数传递给操作链对象。
- 操作链对象已创建并准备好执行任何可行的操作。
除了通用用途之外,动作链还可以用于链或队列模式。
在 Selenium Python 中实现动作链
为了更好地解释这一点,让我们以网站 https://www.jiyik.com/ 为例,并在 Python 代码中做一些实验。
下面的示例代码首先运行网站 https://www.jiyik.com/,然后单击标题中的 迹忆客 按钮,因此浏览器会将我们重定向到 https://www.jiyik.com/ 网站本身的教程/链接。
python
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Firefox()
driver.get("https://www.jiyik.com/")
clicker1 = driver.find_element_by_link_text("网络")
action = ActionChains(driver)
action.click(on_element = clicker1)
action.perform()
该代码首先运行并打开网站的主页 https://www.jiyik.com/
。
然后,根据上述代码中的操作,我们将自动重定向到 https://www.jiyik.com/tm/xwzj/network/
网页。
- Action Chain 类首先从 selenium.webdriver 模块导入。
- 然后定义一个驱动程序,该驱动程序是网站
https://www.jiyik.com/
。 为此,我们使用get()
函数。 - 然后,我们定义一个元素 clicker1,即网站标题中的 TUTORIALS 按钮。
- 该驱动程序作为关键参数传递给操作链对象。
- 然后,我们利用
action.click()
函数并将先前定义的 clicker1 元素作为其参数传递。 - 然后我们执行perform()函数,以便可以进行代码中定义的操作。
在本文的这一部分中,我们举了一个在 Python 中使用 Selenium 中的操作链的现实示例。
然而,仅仅在 Selenium 中实现一个动作链是不够的; 我们还需要知道创建动作链对象后执行的动作链方法。 我们在下面为您描述了一些重要的内容。
- click - 单击元素的方法。
- click_and_hold - 在给定元素上按住鼠标左键的方法。
- double_click - 双击元素的方法。
- Drag_and_drop - 将 LMB 放在元素上,将其拖动到目标站点,然后释放它。
- move_to_element - 鼠标移动到元素的中心。
- perform - 存储在操作链对象中的所有操作都使用此方法执行。
- pause - 所有输入都暂停给定的持续时间。 持续时间以秒为单位。
- release - 如果按住鼠标按钮,则会释放它。