Хотя я бы хотел сделать это и в Internet Explorer, или в Firefox, основное использование будет HtmlUnit.Приятно, что HtmlUnit HtmlElement имеет метод rightClick()
, но, к сожалению, он protected
и поэтому недоступен из обернутого WebDriver HtmlUnitWebElement.
Я написал хак, чтобы сделать его доступным, и теперь я могу вызватьrightClick (), хотя он работает, только если он работает с HtmlUnit, а не с IE или FF.
// 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 ...
}