4

コンテキストメニュー(右クリック)を備えたgrailsアプリで遊んでいます。コンテキストメニューは、ChrisDomiganのjqueryコンテキストメニュープラグインを使用して構築されています。

コンテキストメニューは実際には機能しますが、自動テストが必要であり、その方法を理解できません。

  • Selenium 2.05a(つまり、Webdriver)を試しましたが、rightClickメソッドがありません。
  • HtmlUnitには右クリックメソッドがあることに気付きましたが、クリック前とクリック後のDOMの違いを検出できないようです。
4

3 に答える 3

5

現在、WebDriver には右クリックの方法はありません。そのための拡張リクエストが開かれています - http://code.google.com/p/selenium/issues/detail?id=161

今のところ、キーボード ショートカット Shift+F10 を使用して、要素の右クリックをシミュレートできます。

WebElement element = driver.findElement(....);
element.sendKeys(Keys.chord(Keys.SHIFT, Keys.F10));
于 2010-07-20T08:52:36.687 に答える
0

Internet ExplorerやFirefoxでもできるようにしたいのですが、主な使い方はHtmlUnitです。HtmlUnit HtmlElement にrightClick()メソッドがあるのは良いことですが、残念ながら、protectedHtmlUnitWebElement でラップされた WebDriver からはアクセスできません。

アクセスできるようにするためのハックを書いたので、rightClick() を呼び出すことができるようになりましたが、IE や FF ではなく、HtmlUnit で実行されている場合にのみ機能します。

// Needs to be in this package to get access to the element
package org.openqa.selenium.htmlunit;

import com.gargoylesoftware.htmlunit.html.HtmlElement;

public class OpenHtmlUnitWebElement extends HtmlUnitWebElement {

    // Provide a constructor, even though we don't really need it.
    public OpenHtmlUnitWebElement(HtmlUnitDriver parent, HtmlElement element) {
        super(parent, element);
    }

    // this is the method we really want.
    public static HtmlElement using(HtmlUnitWebElement huwe) {
        return huwe.element;
    }
}

今、私の(グルーヴィーな)テストは次のようになります。

import static org.openqa.selenium.htmlunit.OpenHtmlUnitWebElement.using

...

def itemWithContextMenu = driver.findElement(By.id('theId'))
if (itemWithContextMenu instanceOf HtmlUnitWebElement) {
  using(itemWithContextMenu).rightClick()
  def contextMenu = driver.findElement(By.id('jqContextMenu'))
  assert ...
}
于 2010-07-24T09:49:41.300 に答える