} | } | ||||
} | } | ||||
protected void contextClickElement(WebElement element) { | |||||
if (BrowserUtil.isFirefox(getDesiredCapabilities())) { | |||||
// Workaround for Selenium/TB and Firefox 45 issue | |||||
getCommandExecutor().executeScript( | |||||
"var ev = document.createEvent('HTMLEvents'); ev.initEvent('contextmenu', true, false); arguments[0].dispatchEvent(ev);", | |||||
element); | |||||
} else { | |||||
new Actions(getDriver()).contextClick(element).perform(); | |||||
} | |||||
} | |||||
protected boolean isLoadingIndicatorVisible() { | protected boolean isLoadingIndicatorVisible() { | ||||
WebElement loadingIndicator = findElement( | WebElement loadingIndicator = findElement( | ||||
By.className("v-loading-indicator")); | By.className("v-loading-indicator")); |
import org.junit.Assert; | import org.junit.Assert; | ||||
import org.junit.Test; | import org.junit.Test; | ||||
import org.openqa.selenium.WebElement; | import org.openqa.selenium.WebElement; | ||||
import org.openqa.selenium.interactions.Actions; | |||||
import org.openqa.selenium.remote.DesiredCapabilities; | import org.openqa.selenium.remote.DesiredCapabilities; | ||||
import com.vaadin.testbench.By; | import com.vaadin.testbench.By; | ||||
WebElement input = checkbox.findElement(By.xpath("input")); | WebElement input = checkbox.findElement(By.xpath("input")); | ||||
WebElement label = checkbox.findElement(By.xpath("label")); | WebElement label = checkbox.findElement(By.xpath("label")); | ||||
new Actions(getDriver()).contextClick(input).perform(); | |||||
contextClickElement(input); | |||||
Assert.assertEquals("1. checkbox context clicked", getLogRow(0)); | Assert.assertEquals("1. checkbox context clicked", getLogRow(0)); | ||||
Assert.assertEquals("checked", checkbox.getValue()); | Assert.assertEquals("checked", checkbox.getValue()); | ||||
new Actions(getDriver()).contextClick(label).perform(); | |||||
contextClickElement(label); | |||||
Assert.assertEquals("2. checkbox context clicked", getLogRow(0)); | Assert.assertEquals("2. checkbox context clicked", getLogRow(0)); | ||||
Assert.assertEquals("checked", checkbox.getValue()); | Assert.assertEquals("checked", checkbox.getValue()); | ||||
} | } |
import com.vaadin.testbench.elements.AbstractComponentElement; | import com.vaadin.testbench.elements.AbstractComponentElement; | ||||
import com.vaadin.testbench.elements.ButtonElement; | import com.vaadin.testbench.elements.ButtonElement; | ||||
import com.vaadin.testbench.parallel.BrowserUtil; | |||||
import com.vaadin.testbench.parallel.TestCategory; | import com.vaadin.testbench.parallel.TestCategory; | ||||
import com.vaadin.tests.tb3.MultiBrowserTest; | import com.vaadin.tests.tb3.MultiBrowserTest; | ||||
* @param e | * @param e | ||||
* web element | * web element | ||||
* @param xCoord | * @param xCoord | ||||
* x coordinate | |||||
* x coordinate relative to the top-left corner of the element | |||||
* @param yCoord | * @param yCoord | ||||
* y coordinate | |||||
* y coordinate relative to the top-left corner of the element | |||||
*/ | */ | ||||
protected void contextClick(WebElement e, int xCoord, int yCoord) { | protected void contextClick(WebElement e, int xCoord, int yCoord) { | ||||
new Actions(getDriver()).moveToElement(e, xCoord, yCoord).contextClick() | |||||
.moveByOffset(-5, -5).click().perform(); | |||||
if (BrowserUtil.isFirefox(getDesiredCapabilities())) { | |||||
// Workaround for Selenium/TB and Firefox 45 issue | |||||
int x = e.getLocation().getX() + xCoord; | |||||
int y = e.getLocation().getY() + yCoord; | |||||
getCommandExecutor().executeScript( | |||||
"var ev = document.createEvent('MouseEvents'); ev.initMouseEvent('contextmenu', true, true, document.defaultView, 1, arguments[1], arguments[2], arguments[1], arguments[2], false, false, false, false, 2, null); arguments[0].dispatchEvent(ev);", | |||||
e, x, y); | |||||
// make sure browser context menu does not block the test | |||||
getCommandExecutor().executeScript( | |||||
"var ev = document.createEvent('MouseEvents'); ev.initMouseEvent('click', true, true, document.defaultView, 1, arguments[1]-5, arguments[2]-5, arguments[1]-5, arguments[2]-5, false, false, false, false, 1, null); arguments[0].dispatchEvent(ev);", | |||||
e, x, y); | |||||
} else { | |||||
new Actions(getDriver()).moveToElement(e, xCoord, yCoord) | |||||
.contextClick().moveByOffset(-5, -5).click().perform(); | |||||
} | |||||
} | } | ||||
} | } |
import org.junit.Test; | import org.junit.Test; | ||||
import org.openqa.selenium.WebElement; | import org.openqa.selenium.WebElement; | ||||
import com.vaadin.testbench.elements.GridElement; | |||||
import com.vaadin.testbench.elements.ButtonElement; | import com.vaadin.testbench.elements.ButtonElement; | ||||
import com.vaadin.testbench.elements.GridElement; | |||||
public class GridContextClickTest extends AbstractContextClickTest { | public class GridContextClickTest extends AbstractContextClickTest { | ||||