selenium-webdriver
Programme de base Selenium Webdriver
Recherche…
Introduction
Ce sujet a pour but de montrer le programme de base du pilote Web dans les langages supportés par sélénium comme C #, Groovy, Java, Perl, PHP, Python et Ruby.
Journey inclut l'ouverture d'un pilote de navigateur -> Google Page -> arrêter le navigateur
C #
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
namespace BasicWebdriver
{
class WebDriverTest
{
static void Main()
{
using (var driver = new ChromeDriver())
{
driver.Navigate().GoToUrl("http://www.google.com");
}
}
}
}
Le programme ci-dessus permet d'accéder à la page d'accueil de Google, puis de fermer le navigateur après le chargement complet de la page.
using (var driver = new ChromeDriver())
Cela instancie un nouvel objet WebDriver à l'aide de l'interface IWebdriver
et crée une nouvelle instance de fenêtre de navigateur. Dans cet exemple, nous utilisons ChromeDriver
(bien que cela puisse être remplacé par le pilote approprié pour le navigateur que nous souhaitons utiliser). Nous enveloppons cela avec une instruction using
, car IWebDriver
implémente IDisposable
, ne nécessitant donc pas de taper explicitement driver.Quit();
.
Si vous n'avez pas téléchargé votre WebDriver à l'aide de NuGet , vous devrez transmettre un argument sous la forme d'un chemin vers le répertoire où se trouve le pilote "chromedriver.exe".
Naviguer
driver.Navigate().GoToUrl("http://www.google.com");
et
driver.Url = "http://www.google.com";
Ces deux lignes font la même chose. Ils indiquent au pilote de naviguer vers une URL spécifique et d'attendre que la page soit chargée avant de passer à l'instruction suivante.
Il existe d'autres méthodes liées à la navigation, telles que Back()
, Forward()
ou Refresh()
.
Après cela, le bloc using
ferme en toute sécurité et dispose de l'objet.
Python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
def set_up_driver():
path_to_chrome_driver = 'chromedriver'
return webdriver.Chrome(executable_path=path_to_chrome_driver)
def get_google():
driver = set_up_driver()
driver.get('http://www.google.com')
tear_down(driver)
def tear_down(driver):
driver.quit()
if '__main__' == __name__:
get_google()
Le «programme» ci-dessus permet d'accéder à la page d'accueil de Google, puis de fermer le navigateur avant de terminer.
if '__main__' == __name__:
get_google()
Nous avons d'abord notre fonction principale, notre point d'entrée dans le programme, qui appelle get_google()
.
def get_google():
driver = set_up_driver()
get_google()
commence alors par créer notre instance de driver
via set_up_driver()
:
def set_up_driver():
path_to_chrome_driver = 'chromedriver'
return webdriver.Chrome(executable_path=path_to_chrome_driver)
Nous chromedriver.exe
où se trouve chromedriver.exe
et instancions notre objet pilote avec ce chemin. Le reste de get_google()
navigue vers Google:
driver.get('http://www.google.com')
Et appelle ensuite tear_down()
passant l'objet du pilote:
tear_down(driver)
tear_down()
contient simplement une ligne pour arrêter notre objet pilote:
driver.quit()
Cela indique au pilote de fermer toutes les fenêtres de navigateur ouvertes et de disposer de l'objet du navigateur, car nous n'avons pas d'autre code après cet appel, ce qui met effectivement fin au programme.
Java
Le code ci-dessous est composé d'environ 3 étapes.
- Ouvrir un navigateur chrome
- Ouverture de la page google
- Arrêter le navigateur
import org.openqa.selenium;
import org.openqa.selenium.chrome;
public class WebDriverTest {
public static void main(String args[]) {
System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.google.com");
driver.quit();
}
}
Le «programme» ci-dessus permet d'accéder à la page d'accueil de Google, puis de fermer le navigateur avant de terminer.
System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
La première ligne indique au système où trouver l' ChromeDriver
(chromedriver.exe). Nous créons ensuite notre objet pilote en appelant le constructeur ChromeDriver()
encore, nous pourrions appeler notre constructeur ici pour tout navigateur / plate-forme.
driver.get("http://www.google.com");
Cela indique à notre pilote de naviguer jusqu'à l'URL spécifiée: http://www.google.com . L'API Java WebDriver fournit la méthode get()
directement sur l'interface WebDriver, bien que d'autres méthodes de navigation puissent être trouvées via la méthode navigate()
, par exemple driver.navigate.back()
.
Une fois le chargement de la page terminé, nous appelons immédiatement:
driver.quit();
Cela dit au pilote de fermer toutes les fenêtres de navigateur ouvertes et de se débarrasser de l'objet pilote, car nous n'avons pas d'autre code après cet appel, ce qui met effectivement fin au programme.
driver.close();
Est une instruction (non montrée ici) pour le pilote de fermer uniquement la fenêtre active, dans ce cas, comme nous n'avons qu'une seule fenêtre, les instructions provoqueraient des résultats identiques à l'appel à quit()
.
Java - Meilleures pratiques avec les classes de page
Usecase: Connexion au compte FB
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class FaceBookLoginTest {
private static WebDriver driver;
HomePage homePage;
LoginPage loginPage;
@BeforeClass
public void openFBPage(){
driver = new FirefoxDriver();
driver.get("https://www.facebook.com/");
loginPage = new LoginPage(driver);
}
@Test
public void loginToFB(){
loginPage.enterUserName("username");
loginPage.enterPassword("password");
homePage = loginPage.clickLogin();
System.out.println(homePage.getUserName());
}
}
Classes de pages: Login Page & Page de connexion à la page d'accueil:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
public class LoginPage {
WebDriver driver;
public LoginPage(WebDriver driver){
this.driver = driver;
}
@FindBy(id="email")
private WebElement loginTextBox;
@FindBy(id="pass")
private WebElement passwordTextBox;
@FindBy(xpath = ".//input[@data-testid='royal_login_button']")
private WebElement loginBtn;
public void enterUserName(String userName){
if(loginTextBox.isDisplayed()) {
loginTextBox.clear();
loginTextBox.sendKeys(userName);
}
else{
System.out.println("Element is not loaded");
}
}
public void enterPassword(String password){
if(passwordTextBox.isDisplayed()) {
passwordTextBox.clear();
passwordTextBox.sendKeys(password);
}
else{
System.out.println("Element is not loaded");
}
}
public HomePage clickLogin(){
if(loginBtn.isDisplayed()) {
loginBtn.click();
}
return new HomePage(driver);
}
}
Classe de page d'accueil:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
public class HomePage {
WebDriver driver;
public HomePage(WebDriver driver){
this.driver = driver;
}
@FindBy(xpath=".//a[@data-testid='blue_bar_profile_link']/span")
private WebElement userName;
public String getUserName(){
if(userName.isDisplayed()) {
return userName.getText();
}
else {
return "Username is not present";
}
}
}