selenium-webdriver
Azioni (Emulazione di gesti complessi dell'utente)
Ricerca…
introduzione
Actions
ci offre un modo di emulare esattamente come un utente interagirebbe con una pagina web / elementi. Usando un'istanza di questa classe puoi descrivere una serie di azioni, come fare clic, fare doppio clic, trascinare, premere i tasti, ecc. Una volta descritte queste azioni, per eseguire le azioni, devi chiamare deve costruire le azioni ( .Build()
) e quindi istruirli affinché vengano eseguiti ( .Perform()
). Quindi dobbiamo descrivere, costruire, eseguire. Gli esempi seguenti si espanderanno su questo.
Sintassi
- dragAndDrop (origine WebElement, destinazione WebElement)
- dragAndDropBy (origine WebElement, int xOffset, int yOffset)
- eseguire()
Parametri
parametri | Dettagli |
---|---|
fonte | Elemento per emulare il pulsante in basso a. |
bersaglio | Elemento in cui spostarsi e rilasciare il mouse su. |
xOffset | x coordinata per spostarsi a. |
YOffset | y coordinare per passare a. |
Osservazioni
Questa sezione contiene informazioni sulla classe Actions di Selenium WebDriver. La classe Actions ti offre metodi convenienti per eseguire gesti utente complessi come trascina e rilascia, tieni premuto e fai clic su altro.
Trascinare e rilasciare
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();
}
}
}
Quanto sopra troverà un IWebElement
, source
, e lo trascinerà a, e lo IWebElement
nel secondo IWebElement
, target
.
Giava
Trascina e rilascia utilizzando il webelement di origine e di destinazione.
Un metodo pratico che esegue il click-and-hold nella posizione dell'elemento sorgente, si sposta nella posizione dell'elemento di destinazione, quindi rilascia il mouse.
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();
}
}
Trascina un elemento e rilasciarlo a un dato offset.
Un metodo pratico che esegue il click-and-hold nella posizione dell'elemento sorgente, si sposta di un dato offset (xey, entrambi gli interi), quindi rilascia il mouse.
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
Sposta in elemento
C #
Supponiamo di voler verificare che quando si passa con il mouse su un elemento, viene visualizzato un elenco a discesa. Potresti voler controllare il contenuto di questo elenco, o forse selezionare un'opzione dall'elenco.
Per prima cosa crea un'azione, passa il mouse sopra l'elemento (ad es. Il mio elemento ha il testo del link "Admin") :
Actions mouseHover = new Actions(driver);
mouseHover.MoveToElement(driver.FindElement(By.LinkText("Admin"))).Perform();
Nell'esempio sopra:
- Hai creato l'azione
mouseHover
- Hai detto al
driver
di passare a un elemento specifico - Da qui puoi eseguire altre
Actions
con l'oggettomouseHover
o continuare a testare con l'oggettodriver
Questo approccio è di particolare utilità quando si fa clic su un elemento che esegue una funzione diversa rispetto a passare sopra di esso.
Un esempio completo:
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);