Хотя я хотел бы иметь возможность делать это в 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 ...
}
Благодаря ZloiAdun, но я все еще борется. В зависимости от того, какой элемент я отправляю Shift-F10, я либо вижу обычное контекстное меню IE, либо выбирается меню меню браузера. Я не могу создать свой контекстный контекст. Джон. – John
Возможно, вам стоит попробовать показать свое меню с помощью JavaScript? Код типа ((JavascriptExecutor)) .executeScript ("menu.display (...)"); Я не знаю подробностей меню, которое вы используете, но для его отображения, безусловно, должна быть какая-то функция JavaScript –