selenium - paquetes - r for linux download
¿Cómo puedo probar la funcionalidad del menú contextual en una aplicación web? (3)
Actualmente no hay un método de clic derecho en WebDriver, hay una solicitud de mejora abierta para él - http://code.google.com/p/selenium/issues/detail?id=161
Por ahora puedes usar el atajo de teclado Shift + F10 para simular el clic derecho en el elemento:
WebElement element = driver.findElement(....);
element.sendKeys(Keys.chord(Keys.SHIFT, Keys.F10));
Estoy jugando con una aplicación Grails que tiene un menú contextual (con el botón derecho). El menú contextual se crea utilizando el complemento de jquery contextmenu de Chris Domigan.
Si bien los menús contextuales realmente funcionan, quiero tener pruebas automatizadas, y no puedo encontrar la manera de hacerlo.
- He probado Selenium 2.05a (es decir, Webdriver), pero no hay ningún método RightClick.
- Observé que HtmlUnit tiene un método de clic derecho, pero parece que no puedo detectar ninguna diferencia en el DOM entre antes y después del clic.
Si bien me gustaría poder hacerlo también en Internet Explorer o Firefox, el uso principal será HtmlUnit. Es bueno que HtmlUnit HtmlElement tenga un método rightClick()
, pero desafortunadamente está protected
y, por lo tanto, no es accesible desde el WebDriver envuelto HtmlUnitWebElement.
Escribí un truco para que sea accesible, por lo que ahora puedo llamar a RightClick (), aunque solo funciona si se ejecuta con HtmlUnit, no IE o 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;
}
}
Ahora mi prueba (groovy) se ve así:
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 ...
}
si usas Ruby con Capybara, este debería ser útil:
module Capybara
module Node
class Element
def context_click
@session.driver.browser.action.context_click(self.native).perform
end
end
end
end