selenium-webdriver
Basic Selenium Webdriver-program
Sök…
Introduktion
Detta ämne syftar till att visa det grundläggande webbdrivprogrammet på selenstödspråk som C #, Groovy, Java, Perl, PHP, Python och Ruby.
Resan inkluderar att öppna webbläsardrivrutinen -> Google Page -> stänga webbläsaren
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");
}
}
}
}
Ovanstående 'program' navigerar till Googles hemsida och stänger sedan webbläsaren efter att ha laddat sidan helt.
using (var driver = new ChromeDriver())
Det här skapar ett nytt WebDriver-objekt med IWebdriver
gränssnittet och skapar en ny IWebdriver
webbläsarfönster. I det här exemplet använder vi ChromeDriver
(även om detta skulle kunna ersättas av den lämpliga drivrutinen för vilken webbläsare vi ville använda). Vi lägger in detta med ett using
uttalande, eftersom IWebDriver
implementerar IDisposable
, och därmed inte behöver skriva uttryckligen in driver.Quit();
.
Om du inte har laddat ner din WebDriver med NuGet , måste du skicka ett argument i form av en sökväg till katalogen där drivrutinen själv "chromedriver.exe" är belägen.
Navigerande
driver.Navigate().GoToUrl("http://www.google.com");
och
driver.Url = "http://www.google.com";
Båda dessa linjer gör samma sak. De instruerar föraren att navigera till en specifik URL och vänta tills sidan laddas innan den går till nästa uttalande.
Det finns andra metoder knutna till navigering som Back()
, Forward()
eller Refresh()
.
Därefter slutar using
säkert och bortskaffar föremålet.
Pytonorm
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()
Ovanstående 'program' navigerar till Googles hemsida och stänger sedan webbläsaren innan du är klar.
if '__main__' == __name__:
get_google()
Först har vi vår huvudfunktion, vår startpunkt i programmet, som ringer get_google()
.
def get_google():
driver = set_up_driver()
get_google()
börjar sedan med att skapa vår driver
via set_up_driver()
:
def set_up_driver():
path_to_chrome_driver = 'chromedriver'
return webdriver.Chrome(executable_path=path_to_chrome_driver)
Därmed anger vi var chromedriver.exe
är beläget och anställer vårt förareobjekt med denna sökväg. Resten av get_google()
navigerar till Google:
driver.get('http://www.google.com')
Och ringer sedan tear_down()
passerar tear_down()
:
tear_down(driver)
tear_down()
innehåller helt enkelt en rad för att stänga av vårt förareobjekt:
driver.quit()
Detta säger föraren att stänga alla öppna webbläsarfönster och bortskaffa webbläsarobjektet, eftersom vi inte har någon annan kod efter att detta samtal slutför programmet effektivt.
Java
Koden nedan handlar om tre steg.
- Öppnar en Chrome-webbläsare
- Öppnar google-sidan
- Stäng av webbläsaren
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();
}
}
Ovanstående 'program' navigerar till Googles hemsida och stänger sedan webbläsaren innan du är klar.
System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
Den första raden berättar för systemet var ChromeDriver
(chromedriver.exe) kan köras. Vi skapar sedan vårt förareobjekt genom att ringa ChromeDriver()
-konstruktören, återigen kan vi kalla vår konstruktör här för alla webbläsare / plattformar.
driver.get("http://www.google.com");
Detta berättar föraren att navigera till den angivna url: http://www.google.com . Java WebDriver API tillhandahåller get()
-metoden direkt i WebDriver-gränssnittet, även om ytterligare navigationsmetoder kan hittas via navigate()
metoden, t.ex. driver.navigate.back()
.
När sidan är klar laddar vi omedelbart:
driver.quit();
Detta säger föraren att stänga alla öppna webbläsarfönster och bortskaffa drivrutinsobjektet, eftersom vi inte har någon annan kod efter att detta samtal slutför programmet effektivt.
driver.close();
Är en instruktion (inte visas här) till föraren att bara stänga det aktiva fönstret, i det här fallet eftersom vi bara har ett enda fönster, skulle instruktionerna orsaka identiska resultat som att quit()
.
Java - Bästa praxis med sidklasser
Usecase: Logga in på FB-konto
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());
}
}
Sidklasser: Inloggningssida & hemsida Inloggning sidklass:
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);
}
}
Hemsida klass:
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";
}
}
}