19 Eylül 2019 Perşembe

Selenium WebDriver Arayüzü

Giriş
Şu satırı dahil ederiz.
import org.openqa.selenium.WebDriver;
Her Driver aynı zamanda JavaScripExecutor'a çevrilebilir.

Genel Kullanım
Örnek
Şöyle yaparız
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class BrowserSelection {
  static WebDriver driver;

  public static WebDriver usingChrome() {
    System.setProperty("webdriver.chrome.driver",
      "E:\\SeleniumLibs\\\\chromedriver_win32\\chromedriver.exe"); 
    driver = new ChromeDriver(); 
    driver.manage().window().maximize();
    return driver;
  } 
}

public class MakeMyTripDateTest {
  WebDriver driver;

  @BeforeMethod
  public void openBrowser(){ 
    driver = BrowserSelection.usingChrome(); 
  }

  @AfterMethod
  public void closeBrowser(){
    driver.quit();
  }
}
constructor - Chrome
Chrome için şu satırı dahil ederiz.
import org.openqa.selenium.chrome.ChromeDriver;
Testi başlatmadan önce setUp() kısmında System.setProperty() çağrısı ile webdriver.chrome.driver değişkenini atamak gerekir.

Örnek
Şöyle yaparız.
System.setProperty("webdriver.chrome.driver",
"C:\Selenium\\browser\\chromedriver.exe");
WebDriver driver =  new ChromeDriver();
Örnek
Burada Chrome Driver'ın path'ini veriyoruz. Chrom kurulumunu değil! Şu kod yanlış
System.setProperty("webdriver.chrome.driver",
 "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");
WebDriver driver = new ChromeDriver();
Şöyle yaparız.
System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
Örnek - ChromeOptions
Şöyle yaparız.
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class W3c {
  public static void main(String[] args) throws Exception {
    ChromeOptions opt = new ChromeOptions();
    opt.setExperimentalOption("w3c", true);
    ChromeDriver driver = new ChromeDriver(opt);
    driver.get("https://www.google.co.in");
  }
}
constructor - Firefox
Şu satırı dahil ederiz.
import org.openqa.selenium.firefox.FirefoxDriver;
Testi başlatmadan önce setUp() kısmında System.setProperty() çağrısı ile webdriver.gecko.driver değişkenini atamak gerekir.

Örnek
Şöyle yaparız
System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE, "null");
System.setProperty("webdriver.gecko.driver", "C:\\Selenium\\Drivers\\geckodriver.exe");
driver = new FirefoxDriver();
constructor - Edge
Şu satırı dahil ederiz.
import org.openqa.selenium.edge.EdgeDriver;
Testi başlatmadan önce setUp() kısmında System.setProperty() çağrısı ile webdriver.edge.driver değişkenini atamak gerekir.

Örnek
Şöyle yaparız.
System.setProperty("webdriver.edge.driver", "C:\\Users\\Foo\\Downloads\\
  MicrosoftWebDriver.exe");
WebDriver driver = new EdgeDriver();
Örnek - RemoteWebDriver
Şöyle yaparız
import org.openqa.selenium.remote.RemoteWebDriver;
 
/*
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
*/

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("build", "[Java] ...");
capabilities.setCapability("name", "[Java] ...");
capabilities.setCapability("platform", "Windows 10");
capabilities.setCapability("browserName", "Chrome");
capabilities.setCapability("version","85.0");
capabilities.setCapability("tunnel",false);
capabilities.setCapability("network",true);
capabilities.setCapability("console",true);
capabilities.setCapability("visual",true);
 
WebDriver driver = new RemoteWebDriver(new URL("http://..."), capabilities);
findElement metodu
Şu satırı dahil ederiz. WebElement nesnesi döner.
import org.openqa.selenium.By;
Python ayrı byXXX metodları kullandığı için bence daha okumaklı. Şöyle yaparız. Java da ise By.XXX şeklinde kullanılır.
chromedriver = webdriver.Chrome()
...
elem = chromedriver.find_element_by_class_name("twelve-days-claim")

elem2 = chromedriver.find_element_by_class_name("login-popup")

username = chromedriver.find_element_by_css_selector("div[id*='form-login']
  [id='login-form-email'] input")
Selenium By Sınıfı yazısına taşıdım.

findElements metodu
Açıklaması şöyle.
This method is affected by the 'implicit wait' times in force at the time of execution. When implicitly waiting, this method will return as soon as there are more than 0 items in the found collection, or will return an empty list if the timeout is reached.
Örnek
Elimizde bir XPath olsun.
String path = "/html/body/div/div[3]/tr[1]/th";
Şöyle yaparız.
List <WebElement> pagination= driver.findElements(By.xpath(path));
Örnek
Şöyle yaparız.
List<WebElement> options = driver.findElements(by.xpath(" your locator"));
for(WebElement element : options){
  if(element.getText().equals(" your value from drop down")){
    element.click();
  }
}  
get metodu
Şöyle yaparız.
driver.get("https://www.snapdeal.com/");
getWindowHandle metodu
Şöyle yaparız.
String parentWindowHandler=driver.getWindowHandle();// Store your parent window
getWindowHandles metodu
Örnek
Şöyle yaparız.
// Store the current window handle
String mainWin = driver.getWindowHandle();

// Perform the click operation that opens new window

//Wait till driver.getWindowHandles() returns 2 windows

// Switch to new window opened
for(String winHandle : driver.getWindowHandles()){
    driver.switchTo().window(winHandle);
}
//Get current window to take decision on the next actions
String currentWin= driver.getWindowHandle();

// Perform the actions on new window

// Close the new window
driver.close();

// Switch back to original first window
driver.switchTo().window(mainWin);
Örnek
Şöyle yaparız.
//store parent window value in string
String parentWindow = driver.getWindowHandle();

//store the set of all windows
Set<String> allwindows= driver.getWindowHandles();

for (String childWindow : allwindows) {
  if(!childWindow.equals(parentWindow))
  {
    driver.switchTo().window(childWindow);
    System.out.println("child window");
    System.out.println(driver.getTitle());      
    // do some operation
    //Closing the Child Window.
    driver.close();    
  }
}
driver.switchTo().window(parentWindow);
manage metodu
WebDriver.Options Arayüzü döndürür.

navigate metodu
Şöyle yaparız.
driver.navigate().back();
quit metodu
Şöyle yaparız.
driver.quit();
switchTometodu
alert, frame, window için kullanılabilir.
Örnek
popup varsa şöyle yaparız.
driver.switchTo().alert().accept();
Örnek
Şöyle yaparız.
driver.switchTo().frame("iframeResult");
Örnek
Şöyle yaparız.
Set<String> handles = driver.getWindowHandles(); // get all window handles
Iterator<String> iterator = handles.iterator();
while (iterator.hasNext()){
  subWindowHandler = iterator.next();
}

driver.switchTo().window(subWindowHandler); // switch to popup window

Hiç yorum yok:

Yorum Gönder