'Why am I not able to get rid of a context menu with Selenium or brute force Javascript
I have tried just about everything, but I am not able to get rid of the context menu. Steps
- Right click context menu.
- Accept alert
- Try to get rid of the context menu.
Manually then context menu goes away, but not via automation. Here is the code. Trying to understand what is happening under the hood. Any automation tool/language for an explanation is ok.
By contextMenuBox = By.cssSelector("div#hot-spot");
By contextMenuTitle = By.xpath("//h3[text()='Context Menu']");
By body = By.xpath("//html");
WebDriver driver = DriverManager.getDriver();
driver.get("https://the-internet.herokuapp.com/context_menu");
driver.manage().window().maximize();
String windowHandle = driver.getWindowHandle();
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement contextEle =
wait.until(ExpectedConditions.visibilityOfElementLocated(contextMenuBox));
Actions action = new Actions(driver);
action.moveToElement(contextEle).contextClick().build().perform();
Thread.sleep(1000); //Just a Debug step
Alert alert = driver.switchTo().alert();
alert.accept();
driver.switchTo().window(windowHandle);
System.out.println(driver.findElement(contextMenuTitle).getText());
Thread.sleep(5000); //Just a Debug step
/*
* Trying to click using javascript.
* element.click() as well as creating a mouse click event on the element and then
* dispatching
*/
SeleniumUtility.click(body,0,0);
driver.findElement(body).click();
Actions newAction = new Actions(driver);
newAction.moveToElement(driver.findElement(contextMenuTitle)).click().build().perform();
newAction.sendKeys(Keys.ESCAPE).perform();
Thread.sleep(2000); //Just a Debug step
Update - The only thing that works is the use of the Robot class
Robot robot3 = new Robot();
robot3.keyPress(KeyEvent.VK_ESCAPE);
robot3.keyRelease(KeyEvent.VK_ESCAPE);
Does anyone have an explanation as to why Selenium and Javacript under the hood stuff don't work?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|