雖然我希望能夠在Internet Explorer或Firefox中完成,但主要用法是HtmlUnit。很高興HtmlUnit HtmlElement有一個rightClick()
方法,但不幸的是它的protected
,因此無法從WebDriver包裝的HtmlUnitWebElement訪問。
我寫了一個黑客,使之接近,所以現在我可以打電話請右鍵單擊(),雖然它只有當它與運行的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上下文菜單,或瀏覽器文件menubutton被選中。我無法讓我的自定義情景菜單出現。 - 約翰。 – John 2010-07-20 23:15:37
也許你應該嘗試通過JavaScript顯示你的菜單?喜歡的東西 ((JavascriptExecutor)驅動程序).executeScript( 「menu.display(...)」); 我不知道你正在使用的菜單的細節,但肯定應該有一些JavaScript函數來顯示它 – 2010-07-21 08:12:49