web-dev-qa-db-fra.com

Sélectionnez une option dans le menu contextuel de Selenium Webdriver - Java.

J'utilise le webdriver Selenium. Je ne suis pas en mesure de sélectionner (disons 2ème) option parmi les options ouvertes sur clic droit.

Dans mon code actuel, je peux faire un clic droit sur webElement mais je ne peux pas sélectionner une option dans la liste qui est ouverte après un clic droit, car elle disparaît automatiquement.

Actions action= new Actions(driver);
action.contextClick(productLink).build().perform();

Donc, avec ce code, je peux faire un clic droit, mais le menu clic droit disparaît automatiquement. Je veux sélectionner dire 2ème option dans le menu contextuel.

S'il vous plaît aider !!!

21
Monika Yadav

Pour sélectionner l'élément dans le menu contextuel, vous devez simplement déplacer les positions de votre souris à l'aide de l'événement Key down comme ceci: -

Actions action= new Actions(driver);
action.contextClick(productLink).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.RETURN).build().perform();

espérons que cela fonctionnera pour vous. Passez une bonne journée :)

30
Neear Sharma

* En utilisant la classe Robot, vous pouvez le faire, essayez le code suivant:

Actions action = new Actions(driver);
action.contextClick(WebElement).build().perform();
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_DOWN);
robot.keyRelease(KeyEvent.VK_DOWN);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
5
kushal.8

c'est une meilleure approche et c'est réussi:

Actions oAction = new Actions(driver);
oAction.moveToElement(Webelement);
oAction.contextClick(Webelement).build().perform();  /* this will perform right click */
WebElement elementOpen = driver.findElement(By.linkText("Open")); /*This will select menu after right click */

elementOpen.click();
5
Chetan Khairnar

Nous prendrons l’aide de la classe d’action WebDriver et effectuerons un clic droit. la syntaxe est la suivante:

Actions action = new Actions(driver).contextClick(element);
action.build().perform();

Voici les étapes que nous avons suivies dans l'exemple:

  1. Identifier l'élément
  2. Attendez la présence de Element
  3. Maintenant, cliquez sur le contexte
  4. Après cela, nous devons sélectionner le lien requis.

package com.pack.rightclick;

    import org.openqa.Selenium.Alert;
    import org.openqa.Selenium.By;
    import org.openqa.Selenium.NoSuchElementException;
    import org.openqa.Selenium.StaleElementReferenceException;
    import org.openqa.Selenium.WebDriver;
    import org.openqa.Selenium.WebElement;
    import org.openqa.Selenium.firefox.FirefoxDriver;
    import org.openqa.Selenium.interactions.Actions;
    import org.openqa.Selenium.support.ui.ExpectedConditions;
    import org.openqa.Selenium.support.ui.WebDriverWait;
    import org.testng.Assert;
    import org.testng.annotations.AfterClass;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.Test;

public class RightClickExample {

    WebDriver driver;

    String URL = "http://medialize.github.io/jQuery-contextMenu/demo.html";

    @BeforeClass
    public void Setup() {
        driver = new FirefoxDriver();
        driver.manage().window().maximize();
    }

    @Test
    public void rightClickTest() {
        driver.navigate().to(URL);
        By locator = By.cssSelector(".context-menu-one.box");
        WebDriverWait wait = new WebDriverWait(driver, 5);
        wait.until(ExpectedConditions.presenceOfElementLocated(locator)); 
        WebElement element=driver.findElement(locator);
        rightClick(element);
        WebElement elementEdit =driver.findElement(By.cssSelector(".context-menu-item.icon.icon-edit>span"));
        elementEdit.click();
        Alert alert=driver.switchTo().alert();
        String textEdit = alert.getText();
        Assert.assertEquals(textEdit, "clicked: edit", "Failed to click on Edit link");
    }

    public void rightClick(WebElement element) {
        try {
            Actions action = new Actions(driver).contextClick(element);
            action.build().perform();

            System.out.println("Sucessfully Right clicked on the element");
        } catch (StaleElementReferenceException e) {
            System.out.println("Element is not attached to the page document "
                    + e.getStackTrace());
        } catch (NoSuchElementException e) {
            System.out.println("Element " + element + " was not found in DOM "
                    + e.getStackTrace());
        } catch (Exception e) {
            System.out.println("Element " + element + " was not clickable "
                    + e.getStackTrace());
        }
    }

    @AfterClass
    public void tearDown() {
        driver.quit();
    }


}
4
Anuraj S.L

Vous devrez peut-être déplacer la souris vers un emplacement particulier après un clic contextuel () comme ceci - 

Actions action = new Actions(driver);
actions.contextClick(link).moveByOffset(x,y).click().build().perform();

Pour comprendre le fonctionnement de moveByOffset (x, y), regardez ici

J'espère que ça marche. Vous devrez calculer les valeurs de décalage pour x et y;

le meilleur moyen serait de trouver la taille de chaque bouton d'option après un clic droit, puis si vous cliquez sur la 2ème option 

x = largeur du bouton d'option/2

y = 2 * (taille de chaque bouton d'option)

1
Hari Reddy

Voici le code pour un clic droit sur un élément Web.

Actions actions = new Actions(driver);    
Action action=actions.contextClick(WebElement).build(); //pass WebElement as an argument
            action.perform();
0
user3310451

Voici comment je pourrais cliquer sur le quatrième élément du Right click window

 Actions myAction = new Actions(driver); 
 myAction.contextClick(driver.findElement(By.xpath("//ul/li[1]/a/img"))).build().perform();
 myAction.sendKeys(Keys.ARROW_DOWN).build().perform();
 myAction.sendKeys(Keys.ARROW_DOWN).build().perform();
 myAction.sendKeys(Keys.ARROW_DOWN).build().perform();
 myAction.sendKeys(Keys.ARROW_DOWN).build().perform();
 myAction.sendKeys(Keys.ENTER).build().perform();

J'espère que cela t'aides 

0
pk7

Utilisation du clic droit avec python webdriver

from Selenium import webdriver

from Selenium.webdriver import ActionChains

import time

driver = webdriver.Chrome()

driver.get("https://swisnl.github.io/jQuery-contextMenu/demo.html")
button=driver.find_element_by_xpath("//body[@class='wy-body-for-nav']")

action=ActionChains(driver)
action.context_click(button).perform()
0
sahaja nadendla

Un clic droit peut également être obtenu à l'aide de l'exécuteur de script Java (dans les cas où la classe d'action n'est pas prise en charge):

JavascriptExecutor js = (JavascriptExecutor) driver;

String javaScript = "var evt = document.createEvent('MouseEvents');"
                + "var RIGHT_CLICK_BUTTON_CODE = 2;"
                + "evt.initMouseEvent('contextmenu', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, RIGHT_CLICK_BUTTON_CODE, null);"
                + "arguments[0].dispatchEvent(evt)";

js.executeScript(javaScript, element);
0
Naveen Mehra

Manière meilleure et facile.

Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.cssSelector("a[href^='https://www.Amazon.in/ap/signin']"))).contextClick().build().perform();

Vous pouvez utiliser n’importe quel sélecteur à la place de cssSelector.

0
Sagor Chowdhuri