selenium-webdriver
Actions (émulation de gestes complexes)
Recherche…
Introduction
Actions
nous permet d'imiter avec précision la manière dont un utilisateur interagirait avec une page Web ou des éléments. En utilisant une instance de cette classe, vous pouvez décrire une série d'actions, telles que cliquer, double-cliquer, faire glisser, appuyer sur des touches, etc. Une fois ces actions décrites, vous devez appeler les actions pour exécuter les actions. ( .Build()
), puis leur demander d’être exécuté ( .Perform()
). Donc, nous devons décrire, construire, exécuter. Les exemples ci-dessous développeront cela.
Syntaxe
- dragAndDrop (source WebElement, cible WebElement)
- dragAndDropBy (source WebElement, int xOffset, int yOffset)
- effectuer()
Paramètres
Paramètres | Détails |
---|---|
la source | Élément à émuler bouton vers. |
cible | Élément à déplacer et à relâcher la souris. |
xOffset | x coordonne pour aller à. |
yOffset | y coordonne pour passer à. |
Remarques
Cette section contient des informations sur la classe Actions de Selenium WebDriver. La classe Actions vous fournit des méthodes pratiques pour effectuer des gestes complexes tels que le glisser-déposer, le maintien et le clic, etc.
Glisser déposer
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();
}
}
}
Ce qui précède trouvera une source
IWebElement
et la déposera dans la seconde target
IWebElement
.
Java
Glissez et déposez en utilisant le webelement source et cible.
Une méthode pratique qui effectue un clic sur l'emplacement de l'élément source, se déplace à l'emplacement de l'élément cible, puis libère la souris.
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();
}
}
Faites glisser un élément et déposez-le à un décalage donné.
Une méthode pratique qui effectue un click-and-hold à l'emplacement de l'élément source, se déplace d'un décalage donné (x et y, les deux entiers), puis libère la souris.
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
Déplacer vers l'élément
C #
Supposons que vous vouliez vérifier que lorsque vous survolez un élément, une liste déroulante est affichée. Vous voudrez peut-être vérifier le contenu de cette liste ou peut-être sélectionner une option dans la liste.
Commencez par créer une action, pour survoler l'élément (par exemple, mon élément a le texte du lien "Admin") :
Actions mouseHover = new Actions(driver);
mouseHover.MoveToElement(driver.FindElement(By.LinkText("Admin"))).Perform();
Dans l'exemple ci-dessus:
- Vous avez créé la
mouseHover
- Vous avez dit au
driver
de passer à un élément spécifique - De là, vous pouvez effectuer d'autres
Actions
avec l'objetmouseHover
ou continuer à tester avec votre objetdriver
Cette approche est particulièrement utile lorsque le clic sur un élément exécute une fonction différente de celle du survol.
Un exemple complet:
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);