Po lekcjach dotyczących akcji wykonywanych za pomocą myszki, w tej lekcji poznasz akcje jakie możemy wykonać na klawiaturze w tym przytrzymanie klawisza w Selenium oraz wprowadzanie tekstu.
Przytrzymanie klawisza w Selenium i wprowadzenie tekstu: linki i materiały
Wprowadzenie tekstu
Do wprowadzenia tekstu mamy w klasie Action dwie metody, analogicznie do metod już poznanych. Jedna z nich jako parametr przyjmuje tylko tekst (string), który chcemy przekazać np. do formularza, a druga dodatkowo przyjmuje także element, do którego tekst chcemy przesłać. Jeżeli nie podamy tego elementu, to trzeba będzie w niego kliknąć wcześniej, żeby móc przekazać tekst.
Przytrzymanie klawisza
Czasami potrzebujemy zasymulować przytrzymanie jakiegoś klawisza, np. wtedy, kiedy chcemy zaznaczyć kilka elementów przytrzymując CTRL. Do takiego rodzaju akcji mamy parę metod KeyDown() oraz KeyUp(). Jak sama nazwa nam już wskazuje, pierwsza metoda służy do wciśnięcia danego klawisza, a ostatnia do jego zwolnienia. Pomiędzy tymi akcjami możemy wrzucić coś, co chcemy wykonywać, gdy klawisz będzie wciśnięty.
Te metody też mają dwie formy: albo z jednym parametrem typu string albo dodatkowo jeszcze z elementem.
Kod
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Interactions; using System; using System.Collections.Generic; using System.Text; namespace TestowyProjekt.Other { class KeyboardActionsExamples { IWebDriver driver; Actions actions; [SetUp] public void Setup() { driver = new ChromeDriver(); driver.Manage().Window.Position = new System.Drawing.Point(8, 30); driver.Manage().Window.Size = new System.Drawing.Size(1290, 730); driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(10); driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5); actions = new Actions(driver); driver.Navigate().GoToUrl("https://fakestore.testelka.pl/"); driver.FindElement(By.CssSelector(".woocommerce-store-notice__dismiss-link")).Click(); } [TearDown] public void QuitDriver() { driver.Quit(); } [Test] public void SendKeysTest() { driver.Navigate().GoToUrl("https://fakestore.testelka.pl/moje-konto"); IWebElement loginField = driver.FindElement(By.CssSelector("#username")); ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView(true);", loginField); //actions.SendKeys(loginField, "testowy user").Build().Perform(); //actions.Click(loginField).SendKeys("testowy user").Build().Perform(); actions.KeyDown(Keys.Shift).SendKeys(loginField, "testowy").KeyUp(Keys.Shift).SendKeys(" user").Build().Perform(); } [Test] public void SelectMultipleElementsTest() { driver.Navigate().GoToUrl("https://fakestore.testelka.pl/actions-przyklady/"); driver.SwitchTo().Frame(0); IWebElement list = driver.FindElement(By.CssSelector("ol#selectable")); ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView(true);", list); IList<IWebElement> listElements = list.FindElements(By.CssSelector("li")); actions.KeyDown(Keys.Control).Click(listElements[1]).Click(listElements[3]).KeyUp(Keys.Control).Build().Perform(); } } }
Komentarze
Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc komentować.