71 pytań dotyczących wywiadu z selenem bez odpowiedzi

W tym samouczku pytań do wywiadu Selenium omówimy wszystkie krytyczne pytania do wywiadu Selenium wraz z zaawansowanymi pytaniami do wywiadu ramowego Selenium Automation. Ten samouczek jest podzielony na trzy segmenty:

Pytania do wywiadu Selenium Framework

Zaawansowane pytania dotyczące selenu podczas rozmowy kwalifikacyjnej

Pytania do wywiadu pośredniego na temat selenu

UWAGA : Celem tego wywiadu Selenium tutorial Pytania i Odpowiedzi jest omówienie najbardziej krytycznych i złożonych kwestionariuszy, ponieważ być może już wiesz o podstawowych kwestionariuszach.

Początkowo zaczniemy od pytań i odpowiedzi do rozmów kwalifikacyjnych w Advance Selenium Framework, a następnie przejdziemy dalej pytania i odpowiedzi do rozmów kwalifikacyjnych w trybie krytycznym/zaawansowanym Selenium, a na koniec zakończymy ten samouczek na poziomach średniozaawansowanych, abyś mógł się dobrze przygotować.

Pytania do wywiadu dotyczącego selenu
Pytania do wywiadu dotyczącego selenu

Pytania do wywiadu Selenium Framework

Pytania do wywiadu z wyprzedzeniem o selenie

Pytania do wywiadu pośredniego na temat selenu

Pytania do wywiadu Selenium Framework: 

Ile jest popularnych typów frameworka Selenium?

Istnieją cztery różne typy frameworka Selenium, którymi są: 

Ile jest różnych podejść do projektowania struktury modelu obiektów strony?

Co to jest fabryka Page w selenie?

PageFactory to klasa z biblioteki Selenium z pakietu o nazwie org.openqa.selenium.support, która pomaga zaprojektować wzorzec Page Object Design w strukturze Page Object Model, która ma kilka implementacji, takich jak:

Jaka jest główna różnica projektowa między klasycznym modelem obiektowym strony a niestandardowym modelem obiektowym strony?

Zatem każda strona internetowa powinna mieć jeden interfejs do przechowywania lokalizatorów i 1 klasę dla operacji sieciowych na poziomie strony i ich asercji.

Jaka jest zasada projektowania struktury Page Object Model Framework?

Zasada projektowania struktury Page Object Model opiera się na zasadach lub koncepcjach, którymi są: 

Tak więc wszystkie działania strony (różne operacje funkcji strony internetowej) znajdują się w odpowiednich klasach strony.

Czy wspomnieć o kluczowych różnicach między modelem obiektów strony a hybrydowym modelem obiektowym strony?

Różnica między modelem obiektów strony a hybrydowym modelem obiektów strony polega na tym, że hybrydowy model obiektów strony jest oparty na projekcie struktury modelu obiektu strony wraz z rozbudowanymi funkcjami struktury opartej na danych i obsługuje szeroką gamę narzędzi do obsługi danych, takich jak poniżej : 

Jaki jest parser języka używany we frameworku Cucumber -BDD?

Parserem języka używanym we frameworku Cucumber -BDD jest Gherkin.

Co to jest język Korniszon?

Korniszon to DSL (język specyficzny dla domeny) i język podobny do angielskiego, który jest bardzo czytelny i zrozumiały (tj. Give (), when (), then () itd.)

Co masz na myśli, mówiąc podany () w korniszonie?

 Metoda Given () stwierdza, że ​​została podana lub określona jakaś sytuacja lub scenariusz.

 Co masz na myśli, mówiąc, kiedy () w korniszonie?

Kiedy () oznacza, że ​​wykonujesz pewne operacje.

Co masz na myśli przez to () w korniszonie?

then () jest używany jako asercje po wykonaniu operacji przez dane (). when ().

Jakiego narzędzia CI używasz jako części frameworka?

Używamy Jenkinsa (głównie) jako narzędzia CI o otwartym kodzie źródłowym.

Jakiego narzędzia do budowania używasz jako części frameworka?

Używamy narzędzi do budowania, takich jak Maven / Gradle / ant (wcześniej był używany).

Jaka jest kluczowa różnica między maven a Gradle?

Gradle to zaawansowana wersja tego, co wykonuje maven, a wraz z nią możemy również tworzyć zadania (podobnie jak funkcja dostępna w ANT), więc możemy rozważyć na wysokim poziomie: 

Gradle = >> Maven + Ant 

W ramach Selenium C # używamy Gallio jako narzędzia do budowania. 

Jaka jest struktura testów jednostkowych, której używamy jako część frameworka Selenium Automation?

Głównie używamy TestNG / JUnit (JUnit jest obecnie rzadziej używany) jako część frameworka testów jednostkowych podczas budowania frameworka Automation z Selenium. 

W ramach frameworka Selenium C # używamy NUnit / MbUnit jako frameworka testów jednostkowych.

Jakie podejście można wziąć pod uwagę projektując narzędzia raportowania w ramach Selenium?

Projektując ramy można zastosować różne metody raportowania:

Oprócz integracji tych narzędzi raportowania typu open source, możemy również zdecydować się na niektóre zaawansowane funkcje raportowania lub pulpit nawigacyjny, aby zbudować je przy użyciu poniższych technologii i narzędzi:

Jak używać ELK do tworzenia pulpitu raportowania za pomocą Selenium Framework:

Istnieje podstawowa zasada projektowania, która jest używana do projektowania pulpitu automatyzacji, a są to: 

Jak utworzyć raport dostosowany w formacie HTML?

Możesz skorzystać z różnych interfejsów nasłuchujących i reporterów dostarczonych przez TestNg do rejestrowania zdarzeń i ich odpowiednich zestawów danych oraz tworzenia HTML przy użyciu tych zestawów danych i tagów HTML w narzędziach raportowania.

Jakie wyzwania napotkaliście podczas opracowywania frameworka?

Istnieją różne wyzwania, o których możesz wspomnieć, zgodnie z własnym doświadczeniem podczas tworzenia frameworka, na przykład: 

Wspomnij o wszystkich składnikach Selenium, których użyłeś w swoim Selenium Framework?

Możesz wspomnieć w zależności od swojego frameworka.

Jaki jest przepływ Twojego środowiska automatyzacji?

Możesz wspomnieć o przepływie wykonywania frameworka w zależności od przepływu frameworka i używanych narzędzi; poniżej znajduje się przykład, o którym możesz wspomnieć:

CI (Jenkins) → Narzędzia budowania (Maven /Gradle) → Unit Test Framework (TestNg) → TestNg.xml - >> TestClasses → BaseTest (Każda klasa testowa rozszerza klasę bazową jako baseTest, gdzie kończy się @beforeClass / @ BeforeSuite @afterClass etc) -> TestMethods → PageClasses → Page Methods → WebUtilities ( klasy wielokrotnego użytku dla narzędzi WebAction) - >> Narzędzia raportowania 

Co rozumiesz przez platformę opartą na danych i gdzie używamy struktury opartej na danych?

Struktura oparta na danych to w zasadzie struktura oparta na danych. To powiedziawszy, w których aplikacja lub typ aplikacji, w której te same przypadki testowe lub scenariusze są wykonywane kilka razy z różnymi zestawami danych lub źródłem lub danymi, są bardzo rozległe, jak w przypadku, gdy musimy współdziałać z różnymi Źródła danych, których używamy, są oparte na danych. 

Różne źródła danych mogą być: 

Jak wyjaśnić ramy automatyzacji selenu w wywiadzie?

 Istnieją różne podejścia, które możesz przyjąć, aby wyjaśnić ramy automatyzacji selenu w wywiadzie; najlepszym możliwym podejściem mogłoby być podejście modułowe, które polega na rozbiciu wyjaśnienia na różne oddzielne moduły, takie jak:

Omówmy szczegółowo: 

Typ Frameworka oraz Kluczowe i unikalne cechy Framework:

Należy wspomnieć o typie struktury, takiej jak Hybrid Framework, struktura modelu obiektów strony, hybrydowa struktura modelu Page Object Model itp. 

Trzeba wspomnieć o unikalnych cechach frameworka, takich jak na przykład:

Narzędzia i technologie wykorzystywane w ramach Selenium:

Możesz wspomnieć o narzędziach i technologiach używanych podczas tworzenia frameworka, takich jak:

Przebieg realizacji Selenium Framework:

Możesz wspomnieć o przepływie wykonywania frameworka, tj. W jaki sposób wyzwalasz zestawy testów i jak przepływa do przypadków testowych / metod oraz do narzędzi frameworkowych, takich jak webutils, narzędzia danych itp. Możesz odnieść się do powyższego pytania gdzie omawialiśmy, jak wyjaśnić przepływ wykonania frameworka Selenium.

Różne scenariusze krytyczne obsługiwane przez Twój framework:

W tym module możesz omówić krytyczne funkcje, które zostały zautomatyzowane w ramach automatyzacji aplikacji z Twoją platformą. Istnieje wiele przypadków użycia lub funkcji, o których możesz tutaj wspomnieć, takich jak: 

Jak zaprojektować scenariusze logowania w środowisku Selenium?

Możesz użyć log4j do rejestrowania lub możesz użyć implementacji pulpitu nawigacyjnego w czasie rzeczywistym i debugowania z Graylog, który zasadniczo wykorzystuje ElasticSearch w zapleczu do rejestrowania w czasie rzeczywistym i szczegółów debugowania.

Z jakich wzorców projektowych korzystałeś podczas projektowania frameworka?

Możesz użyć różnych wzorców projektowych, zgodnie z potrzebą i projektem platformy Automation, takich jak:

Krytyczne lub zaawansowane pytania do wywiadu dotyczącego selenu:

Na ile sposobów można równolegle uruchamiać skrypt automatyzacji?

Istnieje wiele sposobów i podejść, za pomocą których można równolegle uruchamiać skrypty testowe, na przykład: 

Maven:

Korzystanie z wtyczki surefire: 

5

 prawdziwe

Tutaj liczba rozwidleń reprezentuje liczbę równoległych wątków.

Gradle: 

tasks.withType(Test) {
        maxParallelForks = Runtime.runtime.availableProcessors()
    }

Jaka jest różnica między metodami setSpeed ​​() i sleep ()?

setSpeed ​​() w Selenium w zasadzie ustawia prędkość wykonania każdej akcji / polecenia. 

Powiedzmy więc, że jeśli ustawisz Speed ​​(„2000”), to każda linia wykonania zostanie opóźniona o 2000 milisekund. 

Z drugiej strony Thread.sleep () wprowadzi 3000 milisekund opóźnienia (zawiesi wątek dla określonej operacji). 

Stąd funkcja sleep () jest stosowana do 1 operacji; z drugiej strony setSpeed ​​() wprowadza opóźnienie dla każdej operacji i tym samym ustawia prędkość wykonania.  

Jak zweryfikować obecność ScrollBar z Selenium? 

Aby zweryfikować poziomy pasek przewijania na stronie z Selenium, używamy Javascriptexecutor w następujący sposób: 

JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
Boolean presenceOfHorizontalScroll = (Boolean) javascriptExecutor.executeScript("return document.documentElement.scrollWidth>document.documentElement.clientWidth;");

Aby zweryfikować pionowy pasek przewijania na stronie internetowej za pomocą Selenium webdriver również musimy użyć Javascriptexecutor

JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
Boolean presenceOfVerticalScroll  = (Boolean) javascriptExecutor.executeScript("return document.documentElement.scrollHeight>document.documentElement.clientHeight;");

Napisz kod obsługujący ukryte elementy sieci Web w selenium webdriver?

WebElement element=driver.findElement(By.id("id_of_Element"));
JavascriptExecutor jsExecutor = (JavascriptExecutor)driver;
jsExecutor.executeScript("arguments[0].click();", element);

Wspomnij o różnych podejściach do obsługi wyskakujących okienek za pomocą webdrivera Selenium?

Możesz użyć poniższych podejść do obsługi aplikacji opartych na oknie, takich jak okno Pop up: 

Jaki jest interfejs nadrzędny WebDriver?

Kontekst wyszukiwania

Wspomnieć o kluczowych różnicach między POI a JXL Jars?

POI obsługuje formatowanie warunkowe, formatowanie tekstu sformatowanego lub format xlsx, ale z drugiej strony JXL nie obsługuje żadnej z tych funkcji.

Biblioteka POI jest utrzymywana i aktualizowana w porównaniu z JXL.

Jak radzisz sobie z opóźnieniami w sieci za pomocą Selenium?

Do obsługi opóźnień sieciowych w Selenium możemy wykorzystać: 

Czas wczytywania.strony przez kierowcę

Jakie podejścia podejmiesz, aby przeprowadzić testowanie treści Ajax za pomocą Selenium WebDriver?

AJAX to w zasadzie asynchroniczny JavaScript i XML. Cała komunikacja Aplikacji opartej na AJAX opiera się na wywołaniach asynchronicznych, 

które pozwalają na wykonanie dowolnego wydarzenia bez odświeżania strony. Każda operacja może być wykonana niezależnie od innych zdarzeń.

Jakie są wyzwania podczas pracy z połączeniami AJAX? Selenium WebDriver?

Aby pracować z aplikacją AJAX, może być konieczne użycie czekania na wyżej wymienione przypadki użycia: 

Jakie jest podejście do pracy z proxy w Selenium Webdriver?

Istnieją dwa różne podejścia do obsługi proxy w Selenium Webdriver: 

Proxy proxy=new Proxy();
proxy.setHttpProxy("localhost:8889");
DesiredCapabilities capabilities=new DesiredCapabilities();
capabilities.setCapability(CapabilityType.PROXY, proxy);
WebDriver driver=new FirefoxDriver(capabilities);

Wspomnieć o sposobach osiągnięcia synchronizacji w WebDriver?

Synchronizację w webdriverze Selenium możemy obsłużyć używając innego mechanizmu wait: 

Wspomnieć o kluczowych różnicach między TestNg @BeforeTest i @BeforeMethod? 

W TestNg @BeforeTest i @BeoreMethod ma różne aspekty:

Wymień różne typy interfejsów API WebDriver obecnych w Selenium?

Na ile sposobów możesz osiągnąć bezgłową egzekucję za pomocą Selenium?

Możemy użyć poniższych sterowników, aby osiągnąć bezgłową automatyzację z Selenium: 

Co to jest Fluent Wait In Selenium WebDriver?

Dzięki FluentWait możesz ustawić maksymalny czas (powiedzmy 3 minuty), aby czekać na spełnienie określonego warunku iw tym czasie będziesz stale odpytywać lub sprawdzać z określoną częstotliwością (bardzo mała jednostka czasu, powiedzmy 3 s) do sprawdzenia.

Jeśli warunek zostanie spełniony, zwróci wartość true, a jeśli nie, zgłosi wyjątek „ElementNotVisibleException”.

Składnia fluentwait w Selenium to:

Wait fluentWait = new FluentWait(driver).withTimeout(100, TimeUnit.SECONDS)
  .pollingevery(2, TimeUnit.SECONDS)
  .ignoring(ElementNotVisibleException.class);

Opowiedz nam o wyjątkach związanych z Selenium, które napotkałeś podczas pracy z` Selenium WebDriver?

Jak usunąć pliki cookie w Selenium?

Polecenie usunięcia plików cookie w Selenium to: 

driver.manage().deleteAllCookies();

Wyjaśnij podejście, w jaki sposób odczytujesz zmienną javascript w selenium webdriver?

Aby to zrobić, musimy użyć JavascriptExecutor. 

JavascriptExecutor jsExecutor = (JavascriptExecutor) webdriver;
String jsVariable = (String.valueOf(jsExecutor.executeScript("return document.title")));

Jak wykonać operację powiększania i pomniejszania przeglądarki w Selenium?

Możemy wykonać operację powiększania i pomniejszania w Selenium, stosując dwa różne podejścia, takie jak: 

Powiększ, używając klasy Robot w selenie

Robot robotInstance = new Robot();
//Zoom in

robotInstance.keyPress(KeyEvent.VK_CONTROL);
robotInstance.keyPress(KeyEvent.VK_ADD);
robotInstance.keyRelease(KeyEvent.VK_ADD);
robotInstance.keyRelease(KeyEvent.VK_CONTROL);

Pomniejsz, używając klasy Robot w selenie


Robot robotInstance = new Robot();
robotInstance.keyPress(KeyEvent.VK_CONTROL);
robotInstance.keyPress(KeyEvent.VK_SUBTRACT);
robotInstance.keyRelease(KeyEvent.VK_SUBTRACT);
robotInstance.keyRelease(KeyEvent.VK_CONTROL);

Powiększ używając klasy Keys w selenie

driver.findElement(By.tagName("html")).sendKeys(Keys.chord(Keys.CONTROL,Keys.ADD));

Pomniejsz, używając klasy Robot w selenie

driver.findElement(By.tagName("html")).sendKeys(Keys.chord(Keys.CONTROL,Keys.SUBTRACT));

Jak wyczyścić pole z selenu bez użycia metody clear ()?

Możemy wyczyścić dowolne pole bez użycia metody clear () w poniższym podejściu: 

Możemy użyć klasy Keys w Selenium, aby osiągnąć to samo: 

WebElement element = driver.findElement(By.id("id_of_Element"));
element.sendKeys(Keys.chord(Keys.CONTROL, "a"));
element.sendKeys(Keys.DELETE);

Jak ponownie uruchomić nieudane przypadki testowe w selenie?

Możemy ponownie uruchomić nieudane przypadki testowe w Selenium w dwóch poniższych podejściach:

Z automatycznie wygenerowanym plikiem TestNG-failed.xml:

Po wykonaniu testu (uruchomionym z testng.xml) TestNG automatycznie generuje TestNG-failed.xml; możesz ponownie uruchomić ten sam plik XML, aby uruchomić TYLKO testy zakończone niepowodzeniem.

Wdrażając Interfejs IRetryAnalyzer z testNg :

Poprzez implementację interfejsu IRetryAnalyzer możemy automatycznie ponownie uruchomić przypadki testowe zakończone niepowodzeniem z TestNg:


If you implement the IRetryAnalyzer you can auto rerun  failed test with TestNg :

public class Retry implements IRetryAnalyzer {
   int counter = 1;
   int retryMaxLimit = 3;
   public boolean retry(ITestResult result) {
       if (counter < retryMaxLimit) {
           counter++;
           return true;
       }
       return false;
   }
}

Jak wyróżnić element w Selenium WebDriver?

Możemy użyć JavascriptExecutor do ustawienia koloru elementu Webelement, wymieniając element.


WebElement element = driver.findElement(By.xpath("id_of_the_element"));
JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
jsExecutor.executeScript("arguments[0].setAttribute('style', 'background: red; border: 2px solid red;');", element);

Jak dwukrotnie kliknąć selen?

Możemy użyć Klasa akcji w selenie by wykonać operacje DoubleClick w poniższy sposób. Poniższa metoda przyjmuje argument, na którym musisz wykonać DoubleClick.

public void doubleClick(By locator) {
\t\ttry {
\t\t\tWebElement element = driver.findElement(locator);
\t\t\tActions actions = new Actions(driver).doubleClick(element);
\t\t\tBASE_LOGGER.info("Performed the double Click on the Element  : " + locator);
\t\t} catch (StaleElementReferenceException e) {
\t\t\tBASE_LOGGER.error("Element is not attached to the page document " + e.getCause().getMessage());
\t\t} catch (NoSuchElementException e) {
\t\t\tBASE_LOGGER.error("Element " + locator + " was not found in DOM " + e.getCause().getMessage());
\t\t} catch (Exception e) {
\t\t\tBASE_LOGGER.error("Element " + locator + " was not clickable " + e.getCause().getMessage());
\t\t}
\t}

Jak przewijać selen?

Musimy użyć JavaScript, aby wykonać przewijanie, a poniższa metoda zapewnia zaawansowane podejście do przewijania elementu, aż element stanie się widoczny, czyli przewiń do widoku: 

public void scrollIntoView(By locator) {

  try {
     JavascriptExecutor executor = (JavascriptExecutor) driver;
     WebElement element = driver.findElement(locator);
     executor.executeScript("arguments[0].scrollIntoView(true);", element);
     BASE_LOGGER
           .info("scrollIntoView operation has been performed for the locator : " + String.valueOf(element));
  } catch (Exception e) {
     String exceptionData = e.getCause().getMessage();
     BASE_LOGGER.error("Error encountered i.e : " + exceptionData
           + " while performing scrollIntoView on the element : " + locator);

  }

}

Jak uzyskać wszystkie linki na stronie w selenie?

Możemy użyć By.tagName („a”), aby pobrać wszystkie linki, które są dostępne na stronie, ponieważ odsyłacz odnosi się do tagu o nazwie a; metoda przebiega w następujący sposób: 

public List<WebElement> getAllLinks() {

  try {
     List<WebElement> allLinks = driver.findElements(By.tagName("a"));
     int numberOfLinks = allLinks.size();
     BASE_LOGGER.info("Number of Links in the Current Page is : " + numberOfLinks);
     BASE_LOGGER.info("GetAllLinks operation has been performed for the Current Page : ");
     return allLinks;
  } catch (Exception e) {
     String exceptionData = e.getCause().getMessage();
     BASE_LOGGER.error("Error encountered i.e : " + exceptionData
           + " while performing GetAllLinks for the Current Page :");
     return null;
  }

}

Jak znaleźć liczbę ramek iframe na stronie w Selenium?

Możemy użyć poniższej metody, aby znaleźć liczbę ramek iframe na stronie w Selenium:

public int numberOfIframesInPage() {
  try {
     JavascriptExecutor exe = (JavascriptExecutor) driver;
     Integer numberOfIFrames = Integer.parseInt(exe.executeScript("return window.length").toString());
     BASE_LOGGER.info("Number of IFrames in the current Window are : " + numberOfIFrames);
     return numberOfIFrames;

  } catch (Exception e) {
     BASE_LOGGER
           .error("Exception occurred in Finding numberOfIframesInPage with : " + e.getCause().getMessage());
     return 0;
  }

}

Jak przełączyć się na domyślną ramkę w webdriverze selenium?

Możemy użyć metody switchTo (). DefaultContent (), aby przełączyć się na ramkę domyślną w Selenium Webdriver: 

public void switchToDefaultFrame() {
  try {
     driver.switchTo().defaultContent();
     BASE_LOGGER.info("Switched to Default Content ");
  } catch (Exception e) {
     BASE_LOGGER.error("Exception Occurred while switching to default Content ");
  }
}

Jak obchodzić się z tabletkami w selenie?

Możemy użyć listy do przechowywania wszystkich dostępnych kart i użyć driver.getWindowHandles () do przechowywania kart, a potem możemy obsługiwać karty jedna po drugiej w poniższym podejściu, na przykład: 

public void switchToTab(int indexOfTab) {

  try {

     ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
     driver.switchTo().window(tabs.get(indexOfTab));
     BASE_LOGGER.info("Successfully switched to tab with tab index as : " + indexOfTab);
  } catch (Exception e) {
     String exceptionData = e.getCause().getMessage();
     BASE_LOGGER.error(
           "Unable to Switch to Tab for :" + indexOfTab + " i.e failed with exception as : " + exceptionData);

  }



}

Pytania do wywiadu pośredniego na temat selenu

Czy WebDriver jest klasą czy interfejsem?

Webdriver to interfejs, w którym wszystkie klasy sterowników, takie jak ChromeDriver, FirefoxDriver, tworzą obiekt i mają odniesienie do interfejsu Webdriver.

Który jest szybszy, XPath czy CSS?

CSS jest szybszy niż XPath. 

Dlaczego CSS jest szybszy niż XPath?

Każdy silnik przeglądarki jest inny, dlatego strategia analizowania i implementacja silnika różnią się w napisanej XPath. Dlatego analizowanie XPath czasami staje się niespójne; na przykład IE nie ma własnej implementacji silnika do analizowania XPATH; stąd Selenium wstrzykuje własny natywny silnik XPath do analizowania XPATH w IE. 

Co to są uprzywilejowane przeglądarki uprzywilejowane?

Gdy przeglądarki są otwierane z niektórymi wstępnie zdefiniowanymi ustawieniami (przykład ze specjalnym trybem uprzywilejowanym), na przykład z określonymi profilami lub certyfikatami, nazywa się to podwyższonymi sesjami uprzywilejowanych przeglądarek. 

Możemy uruchom przeglądarkę z Selenium z profilowaniem lub ustawianiem certyfikatów do tych samych celów.

Co to jest Headless Browser Selenium i jak przeprowadzamy bezgłowe testy przeglądarek?

  Bezgłowa przeglądarka to program symulacyjny dla przeglądarki, w której nie mamy interfejsu użytkownika, ale nadal możemy uruchomić testowaną aplikację w trybie niewidocznym 

 i wykonaj żądaną operację internetową w tle.

 Używamy sterowników przeglądarki HeadLess, takich jak sterownik HTMLUNIT lub sterownik phantomJS, do przeprowadzania bezgłowego testowania przeglądarki.

Selen a lalkarz? 

Istnieje kilka różnic między Selenium a lalkarzem (który jest nowym narzędziem w porównaniu do Selenium i opracowanym przez Google Chrome DEV)

Omówimy tutaj porównanie między Selenium VS Puppeteer w różnych aspektach: 

HardAssert czy SoftAssert?

Oba podejścia do asercji pochodzą z TestNg, a każde z nich ma swoje zalety i wady

 Kiedy jesteś w okolicznościach, w których potrzebujesz asercji, która jest oczywista, tj. Bez tego kroku pozostałe kroki skryptu nie mają sensu do wykonania, możesz umieścić tam Hard Assert.

 Jak ustawić rozmiar okna w selenie?

Możemy stworzyć obiekt klasy Dimension i przekazać ten obiekt do metody setSize (): 

Dimension dimension = new Dimension(480,700);
driver.manage().window().setSize(dimension);

Z jakiego systemu kontroli wersji korzystasz podczas pracy z Selenium?

Możesz wspomnieć o używanym systemie VCS, takim jak Github, SVN itp.

Jak sklonować repozytorium Git?

Możemy sklonować repozytorium git za pomocą:

Git clone repo

Jak pobrać kod repozytorium Git?

Git pull remoteRepoURL branchName

Jak przekazać kod do repozytorium git?

Git push remoteURL branchName

Jak ustawić pilota? 

git remote add ProvideARemoteName remoetURL

Jak zweryfikować dostępne piloty?

Git remote -v 

Jak sprawdzić, w którym zdalnym adresie URL aktualnie się znajdujesz? 

git config --get remote.origin.url

Jak możesz zintegrować swój framework z Jenkinsem?

W ramach Selenium Automation używamy narzędzi do budowania (takich jak Maven / Gradle) i możemy stworzyć Jenkins Job i połączyć Maven / Gradle, dostarczając konfigurację za pomocą VCS (tj. Github itp.)

Jakie są wady Sikuli?

Jak przeprowadzić testy baz danych przy użyciu selenu?

Możemy przeprowadzić testy baz danych przy użyciu selenu w poniższym podejściu modułowym: 

Oto poniżej fragment kodu dla powyższych kroków: 

Skonfiguruj połączenie z bazą danych Selenium za pomocą JAVA JDBC i utworzy instrukcję DB: 

   static Connection connection = null;
   private static Statement statement;
   public static String DataBase_URL = "DB_URL";
   public static String DataBase_USER = "DB_UserName";
   public static String DataBase_PASSWORD = "DB_password";



   /* This method Creates the connection with Java JDBC and return it to the Test method to use along with statement 
   */
@BeforeTest
   public void setUp() throws Exception {
       try{

           String dbClass = "com.mysql.cj.jdbc.Driver";
           Class.forName(dbClass).newInstance();
           Connection con = DriverManager.getConnection(DataBase_URL, DataBase_USER, DataBase_PASSWORD);
           statement = con.createStatement();
       }
       catch (Exception e)
       {
           e.getCause().getMessage().toString();

       }


   }

Użyj instrukcji, aby wysłać zapytanie do bazy danych za pomocą SQL: 

@Test
public void test() {
   try{
       String queryData = "select * from TableName";

       ResultSet res = statement.executeQuery(queryData);
       while (res.next())
       {
           System.out.print(res.getString(1));
           System.out.print(" " + res.getString(2));
       }
   }
   catch(Exception e)
   {
       e.getMessage();
   }
}

Zamykanie połączenia danych: 

Ten krok jest bardzo ważny; w przeciwnym razie możemy utworzyć wiele połączeń z bazą danych bez zamykania ich po użyciu, co może powodować kilka problemów. 

Oto fragment kodu dla tego samego: 

@AfterTest
public void tearDown() throws Exception {

   if (connection != null) {
       connection.close();
   }
}

Jak zweryfikować kolor tła i kolor elementu WebElement przy użyciu Selenium? 

Musimy użyć metody o nazwie getCssValue („color”) do pobierania koloru elementu internetowego i getCssValue („background-color”) aby pobrać kolor tła elementu internetowego.

Oto fragment kodu: 

String colour  = driver.findElement(By.xpath("XPATH_of_the_Element")).getCssValue("color");

String backgroundColour = driver.findElement(By.xpath("XPATH_of_the_Element")).getCssValue("background-color");

Jak zweryfikować rozmiar czcionki WebElementu za pomocą webdrivera Selenium? 

Możemy użyć metody o nazwie getCssValue („font-size”)

String fontSize  = driver.findElement(By.xpath("XPATH_of_the_Element")).getCssValue("font-size");

Jak zweryfikować typ czcionki elementu internetowego w Selenium Webdriver? 

String fontSize = driver.findElement(By.xpath("XPATH_of_the_Element")).getCssValue("font-type");

Jak uzyskać tekst podpowiedzi w selenie?

Pobieranie tekstu podpowiedzi elementu WebElement to nic innego jak uzyskanie atrybutu tytułu elementu Webelement w następujący sposób: 

public String getToolTipData(By locator){

   WebElement element=driver.findElement(locator);
   return element.getAttribute("title");
}

Co to jest wyjątek StaleElementException? 

Nieaktualny element oznacza, że ​​element sieciowy nie jest już powiązany z DOM / Stroną internetową, która była wcześniej obecna. W takim przypadku Selenium rzuca wyjątek nieaktualny element.

Może się tak zdarzyć z kilku różnych powodów, na przykład z powodu wywołań AJAX lub JavaScript, które zmieniają stan

elementu sprawia, że ​​jest niedostępny / odłączony od DOM.  

Wnioski : Na tym skończyliśmy z zestawami pytań do wywiadu krytycznego Selenium obejmującymi pytania do wywiadu Selenium Framework. Przeczytaj tutaj, aby uzyskać więcej informacji koncepcje selenu zrozumieć architekturę selenu.

Zostaw komentarz