当可以使用ActionsClass完成所有动作时,为什么需要动作接口

时间:2019-05-10 07:16:05

标签: java selenium webdriver

如果所有动作都可以使用动作类执行,那么我们在什么地方,为什么需要动作接口,它的解释是什么?

方法1:-

WebElement Fname = driver.findElement(By.id("ts_first_name"));

    Actions act = new Actions(driver);

    Action newAct = act.moveToElement(Fname)
            .keyDown(Fname, Keys.SHIFT)
            .sendKeys("abhresh")
            .keyUp(Fname, Keys.SHIFT)
            .doubleClick(Fname)
            .contextClick(Fname)
            .build();

    newAct.perform();

方法2:-

WebElement Fname = driver.findElement(By.id("ts_first_name"));

    Actions act = new Actions(driver);

    act.moveToElement(Fname)
            .keyDown(Fname, Keys.SHIFT)
            .sendKeys("abhresh")
            .keyUp(Fname, Keys.SHIFT)
            .doubleClick(Fname)
            .contextClick(Fname)
            .build().perform();

如果两种方法都相同,那么为什么要使用方法1?为什么不呢?

1 个答案:

答案 0 :(得分:2)

您基本上是在问:在示例1中声明局部变量 newAct的目的是什么。

答案是:取决于。

如果您仅需要该Action对象在其上调用perform(),那么在该局部变量中有没有的意义。另一方面,如果您想在调用newAct之后用perform() other 事情,那么显然,最好存储该对象以便以后访问。< / p>

换句话说:您选择了完成任务所需的方法。这里没有对与错,也没有对与错。只是两种略有不同的方法,支持两种略有不同的用例。

相关问题