Zoeken…


Invoering

De klasse 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 het mouseHover object of doorgaan met testen met uw driver 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);


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow