/*
* Copyright 2000-2021 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.testbench.elements;
import java.util.List;
import java.util.NoSuchElementException;
import org.openqa.selenium.By;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import com.vaadin.testbench.elementsbase.ServerClass;
@ServerClass("com.vaadin.ui.MenuBar")
public class MenuBarElement extends AbstractComponentElement {
private Point lastItemLocationMovedTo = null;
/**
* Clicks on a visible item.
* If the item is a top level menu, the submenu is opened if it was closed,
* or closed if it was opened.
* If the item is another submenu, that submenu is opened.
* If the item is not a submenu, it will be clicked and trigger any actions
* associated to it.
*
* @param item
* name of the item to click
* @throws NullPointerException
* if item does not exist or is not visible
*/
private void clickItem(String item) {
WebElement webElement = getVisibleItem("#" + item);
if (webElement == null) {
throw new NoSuchElementException(
"Menu item " + item + " is not available.");
}
activateOrOpenSubmenu(webElement, true);
}
/**
* Clicks the item specified by a full path given as variable arguments.
* Fails if path given is not full (ie: last submenu is already opened, and
* path given is last item only).
*
* Example: *
* ** // clicks on "File" item * menuBarElement.click("File"); * // clicks on "Copy" item in "File" top level menu. * menuBarElement.click("File", "Copy"); ** * @param path * Array of items to click through */ public void clickItem(String... path) { if (path.length > 1) { closeAll(); } for (String itemName : path) { clickItem(itemName); } } /** * Closes all submenus, if any is open.