29

Selenium webdriver を使用しています。右クリックで開いたオプションから (たとえば 2 番目の) オプションを選択できません。

現在のコードでは、webElement を右クリックできますが、右クリック後に開かれるリストからオプションを選択できませんでした。オプションは自動的に消えるためです。

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

したがって、このコードでは右クリックできますが、右クリック メニューは自動的に消えます。右クリックメニューから2番目のオプションを選択したいと思います。

助けてください!!!

4

12 に答える 12

34

コンテキスト メニューからアイテムを選択するには、次のように Key down イベントを使用してマウスの位置を移動するだけです。

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

これがうまくいくことを願っています。すてきな一日を :)

于 2012-07-12T10:46:38.843 に答える
9

*ロボットクラスを使用すると、これを行うことができます.次のコードを試してください:

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);

[アップデート]

注意:ブラウザは常にフォーカスされている必要があります。つまり、ロボット アクションの実行中はフォアグラウンドで実行されている必要があります。そうしないと、フォアグラウンドにある他のアプリケーションがアクションを受け取ります。

于 2017-01-04T09:11:47.990 に答える
4

WebDriver アクション クラスを利用して、右クリックを実行します。以下は構文です:

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

以下は、この例で実行した手順です。

  1. 要素を特定する
  2. 要素の存在を待ちます
  3. コンテキストクリックを実行する
  4. その後、必要なリンクを選択する必要があります。

パッケージ 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();
    }


}
于 2015-10-08T07:15:50.660 に答える
2

マウスを右クリックする代わりに、キーボード ショートカットを使用します。

要素をダブルクリック -> Shift キーを押しながら F10 キーを押します。

Actions action = new Actions(driver);

//Hold left shift and press F10
action.MoveToElement(element).DoubleClick().KeyDown(Keys.LeftShift).SendKeys(Keys.F10).KeyUp(Keys.LeftShift).Build().Perform();
于 2019-03-21T14:29:58.610 に答える
1

次のように、コンテキスト click() の後にマウスを特定の場所に移動する必要がある場合があります-

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

moveByOffset(x,y) がどのように機能するかを理解するには、こちらを参照してください。

これがうまくいくことを願っています。xyのオフセット値を計算する必要があります。

最善の方法は、右クリックしてから2番目のオプションをクリックした後、各オプションボタンのサイズを見つけることです。

x =オプション ボタンの幅/2

y = 2*(各オプション ボタンのサイズ)

于 2012-07-11T09:56:42.230 に答える
0

これは、 の 4 番目の要素をクリックする方法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();

お役に立てれば

于 2016-07-26T05:00:04.500 に答える