我是硒的新手,我试图了解Interface Action和Class Action。我的理解是Interface Action只有一种方法Perform()。 但是我看到Actions类也有方法Perform()。因为类Actions不能从Interface Action实现,所以它是Perform方法 不是接口的重写方法。我的问题是,如果Actions类没有实现Interface Action,那么哪个类实现了perform方法呢? 我会说类动作未实现接口动作吗?我没有看到任何文件说是这样。
org.openqa.selenium.interactions
Interface Action
All Known Implementing Classes:
ButtonReleaseAction, ClickAction, ClickAndHoldAction, CompositeAction, ContextClickAction, DoubleClickAction,
DoubleTapAction, DownAction, FlickAction, KeyDownAction, KeyUpAction, LongPressAction, MoveAction, MoveMouseAction,
MoveToOffsetAction, PauseAction, ScrollAction, SendKeysAction, SingleTapAction, UpAction
答案 0 :(得分:0)
Actions
是一个实用程序类。实际上,它没有实现Action
接口。它是使用Builder
设计模式设计的,因此您可以调用方法链,每个方法链都会增加原始对象的状态。
有几个实现Action
接口的类。您可以使用任何IDE来跟踪它们(DoubleClickAction
,KeyUpAction
等)。
如果您将观察到这些Action
实现,那么您还将看到它们当前已被弃用。这是因为存在Interaction
的新概念。该实用程序Actions
类支持两者。每次使用“ Actions”类将新的“ action”添加到动作链时,都会在其内部的动作存储中添加相应的Action
实现,并且还会在一系列交互中添加Interaction
的相应实现。
然后,当您执行build()
时,它会选择在这种特殊情况下使用哪个。
答案 1 :(得分:-1)
简而言之,org.openqa.selenium.interactions
程序包包含以下接口:
Action
:表示单个用户交互操作的界面。Encodable
:此接口允许自定义交互以JSON编码用于W3C有线格式。HasInputDevices
:由每个驱动程序实现的接口,允许访问原始输入设备。HasTouchScreen
:由每个驱动程序实现的接口,允许访问触摸屏功能。InputSource
:为W3C WebDriver规范定义和使用的输入源建模。Interactive
:指示可以与W3C WebDriver Actions命令一起使用的类。IsInteraction
:帮助我们将代码过渡到新世界的界面Keyboard
:表示基本的低级键盘操作的界面。Locatable
Mouse
:表示基本鼠标操作的界面。TouchScreen
:表示基本触摸屏操作的界面。它还包含以下类:
Actions
:面向用户的API,用于模拟复杂的用户手势。ButtonReleaseAction
:已弃用ClickAction
:已弃用ClickAndHoldAction
:已弃用CompositeAction
:用于汇总动作并同时触发所有动作的动作。ContextClickAction
:已弃用DoubleClickAction
:已弃用Interaction
:用作W3C WebDriver spec Action commands序列的基础。KeyDownAction
:为key input source建模。KeyInput
:已弃用MoveMouseAction
:已弃用MoveToOffsetAction
:已弃用Pause
:指示给定的InputSource应该暂停给定的持续时间。PauseAction
:已弃用PointerInput
:为pointer input source建模。PointerInput.Origin
:SendKeysAction
:已弃用Sequence
:给定InputSource与W3C Action commands一起使用的一系列动作对象。 perform()
是Class Actions中的一种方法,定义为:
public void perform()
是一种无需先调用build()
即可执行操作的便捷方法。