Internet ExplorerやFirefoxでもできるようにしたいのですが、主な使い方はHtmlUnitです。HtmlUnit HtmlElement にrightClick()
メソッドがあるのは良いことですが、残念ながら、protected
HtmlUnitWebElement でラップされた 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 ...
}