Зачем нам нужен интерфейс действий, когда все действия можно выполнять с помощью ActionsClass - PullRequest
0 голосов
/ 10 мая 2019

Если все действия могут быть выполнены с использованием класса действий, тогда где и зачем нам нужен интерфейс действий и что бы это объяснило?

Метод 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 Ответ

2 голосов
/ 10 мая 2019

Вы в основном спрашиваете: с какой целью объявить локальную переменную newAct в примере 1.

Ответ: это зависит.

Если вам только требуется, чтобы этот объект Action вызывал perform() для него, тогда нет пункта с наличием этой локальной переменной. Если, с другой стороны, вы хотите сделать другие вещи с newAct после вызова perform(), тогда, очевидно, вам лучше сохранить этот объект, чтобы вы могли позже получить к нему доступ.

Другими словами: вы выбрали тот метод, который необходим для выполнения вашей задачи. Здесь нет правильного или неправильного или хорошего против плохого. Просто два слегка отличающихся подхода, которые поддерживают два слегка отличающихся варианта использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...