selenium-webdriver
Acties (complexe gebruikersgebaren emuleren)
Zoeken…
Invoering
Actions
biedt ons een manier om precies na te bootsen hoe een gebruiker zou omgaan met een webpagina / elementen. Met behulp van een instantie van deze klasse kunt u een reeks acties beschrijven, zoals klikken, dubbelklikken, slepen, toetsen indrukken, enz. Zodra deze acties zijn beschreven, moet u de acties samenstellen om de acties uit te voeren ( .Build()
) en instrueer ze vervolgens om te worden uitgevoerd ( .Perform()
). We moeten dus beschrijven, bouwen, presteren. De onderstaande voorbeelden zullen hier nader op ingaan.
Syntaxis
- dragAndDrop (WebElement-bron, WebElement-doel)
- dragAndDropBy (bron WebElement, int xOffset, int yOffset)
- uitvoeren()
parameters
parameters | Details |
---|---|
bron | Element om knop naar beneden te emuleren. |
doelwit | Element om naar toe te gaan en de muis los te laten. |
xOffset | x coördineren om naartoe te gaan. |
yOffset | y coördineer om naartoe te gaan. |
Opmerkingen
Deze sectie bevat informatie over de Action-klasse van Selenium WebDriver. De klasse Actions biedt handige methoden om complexe gebruikersgebaren uit te voeren, zoals slepen en neerzetten, vasthouden en klikken, enz.
Slepen en neerzetten
C #
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Interactions;
namespace WebDriverActions
{
class WebDriverTest
{
static void Main()
{
IWebDriver driver = new FirefoxDriver();
driver.Navigate().GoToUrl("");
IWebElement source = driver.FindElement(By.CssSelector(""));
IWebElement target = driver.FindElement(By.CssSelector(""));
Actions action = new Actions(driver);
action.DragAndDrop(source, target).Perform();
}
}
}
Bovenstaande vindt een IWebElement
, source
en sleept deze naar het tweede IWebElement
target
.
Java
Slepen en neerzetten met bron- en doelwebelement.
Een gemakkelijke methode die click-and-hold uitvoert op de locatie van het bronelement, naar de locatie van het doelelement gaat en vervolgens de muis loslaat.
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
/**
* Drag and Drop test using source and target webelement
*/
public class DragAndDropClass {
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("");
WebElement source = driver.findElement(By.cssSelector(""));
WebElement target = driver.findElement(By.cssSelector(""));
Actions action = new Actions(driver);
action.build();
action.dragAndDrop(source, target).perform();
}
}
Sleep een element en zet het neer op een gegeven offset.
Een gemakkelijke methode die click-and-hold uitvoert op de locatie van het bronelement, beweegt met een gegeven offset (x en y, beide gehele getallen) en laat vervolgens de muis los.
WebElement source = driver.findElement(By.cssSelector(""));
Actions action = new Actions(driver);
action.build()
action.dragAndDropBy(source, x, y).perform(); // x and y are integers value
Ga naar element
C #
Stel dat u wilt testen dat wanneer u over een element zweeft, een vervolgkeuzelijst wordt weergegeven. Misschien wilt u de inhoud van deze lijst controleren of een optie uit de lijst selecteren.
Maak eerst een actie om over het element te bewegen (mijn element heeft bijvoorbeeld de linktekst 'Beheerder') :
Actions mouseHover = new Actions(driver);
mouseHover.MoveToElement(driver.FindElement(By.LinkText("Admin"))).Perform();
In het bovenstaande voorbeeld:
- U hebt de actie
mouseHover
- U hebt de
driver
gevraagd naar een specifiek element te gaan - Vanaf hier kunt u andere
Actions
uitvoeren met hetmouseHover
object of doorgaan met testen met uwdriver
object
Deze benadering is met name nuttig wanneer het klikken op een element een andere functie vervult dan eroverheen zweven.
Een volledig voorbeeld:
Actions mouseHover = new Actions(driver);
mouseHover.MoveToElement(driver.FindElement(By.LinkText("Admin"))).Perform();
Assert.IsTrue(driver.FindElement(By.LinkText("Edit Record")).Displayed);
Assert.IsTrue(driver.FindElement(By.LinkText("Delete Record")).Displayed);