findElements(BY by);
Bir sayfada birden fazla bulmak istediğin element varsa bunu kullanabilirsin. Mesela google arama sayfasındaki sonuç linklerini bulup saymak gibi.
package Methods;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class FindElementsWhiztrial {
private WebDriver driver;
private String BaseUrl;
@Before
public void setUp() throws Exception {
System.setProperty("webdriver.gecko.driver","C:\\Selenium\\geckodriver-v0.23.0-win64\\geckodriver.exe");
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
BaseUrl = "http://localhost/whizTrial/";
}
@After
public void tearDown() throws Exception {
driver.quit();
}
@Test
public void test() {
driver.get(BaseUrl);
driver.findElement(By.id("N_acnt")).click();
WebElement butuntablo= driver.findElement(By.xpath("/html[1]/body[1]/section[1]/div[1]/form[1]/table[1]"));
List<WebElement> satirlar = butuntablo.findElements(By.tagName("input")); //burda artık butuntablo için findelement metodunu kullanıyoruz
System.out.println(satirlar.size());
String satirinxpathi=null;
String satirinadi;
for (int i=1; i<satirlar.size();i++){
satirinxpathi = "/html[1]/body[1]/section[1]/div[1]/form[1]/table[1]/tbody[1]/tr[" + String.valueOf(i)+"]";//abs xpath i alıyoruz, xpath string olduğu için i nin String value su lazım
System.out.println(satirinxpathi);
satirinadi = driver.findElement(By.xpath(satirinxpathi)).getText();//satirinxpath i sırayla artacak ve herbirinin adi gelecek, getText demezsek formda görülen adı gelmez
System.out.println(satirinadi);
System.out.println("**********************************************");
}
}
}
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class FindElementsWhiztrial {
private WebDriver driver;
private String BaseUrl;
@Before
public void setUp() throws Exception {
System.setProperty("webdriver.gecko.driver","C:\\Selenium\\geckodriver-v0.23.0-win64\\geckodriver.exe");
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
BaseUrl = "http://localhost/whizTrial/";
}
@After
public void tearDown() throws Exception {
driver.quit();
}
@Test
public void test() {
driver.get(BaseUrl);
driver.findElement(By.id("N_acnt")).click();
WebElement butuntablo= driver.findElement(By.xpath("/html[1]/body[1]/section[1]/div[1]/form[1]/table[1]"));
List<WebElement> satirlar = butuntablo.findElements(By.tagName("input")); //burda artık butuntablo için findelement metodunu kullanıyoruz
System.out.println(satirlar.size());
String satirinxpathi=null;
String satirinadi;
for (int i=1; i<satirlar.size();i++){
satirinxpathi = "/html[1]/body[1]/section[1]/div[1]/form[1]/table[1]/tbody[1]/tr[" + String.valueOf(i)+"]";//abs xpath i alıyoruz, xpath string olduğu için i nin String value su lazım
System.out.println(satirinxpathi);
satirinadi = driver.findElement(By.xpath(satirinxpathi)).getText();//satirinxpath i sırayla artacak ve herbirinin adi gelecek, getText demezsek formda görülen adı gelmez
System.out.println(satirinadi);
System.out.println("**********************************************");
}
}
}
WindowHandle()
Bu fonksiyon çalışılan ana sayfayı String olarak tutar.
driver.get("https://tr-tr.facebook.com/");
String anasayfa = driver.getWindowHandle();
driver.findElement(By.name("email")).clear();
driver.findElement(By.name("email")).sendKeys("sinem");
driver.findElement(By.name("pass")).clear();
driver.findElement(By.name("pass")).sendKeys("123");
driver.findElement(By.id("loginbutton")).click();
Thread.sleep(3000);
driver.switchTo().window(anasayfa);//getWindowHandle ile aldığın sayfaya götürüyor
WindowHandles()
Bu fonksiyon birden fazla web sayfası arası geçişlerde kullanılır.
package Methods;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class GetWindowHandles {
private WebDriver driver;
@Before
public void setUp() throws Exception {
System.setProperty("webdriver.gecko.driver","C:\\Selenium\\geckodriver-v0.23.0-win64\\geckodriver.exe");
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
}
@After
public void tearDown() throws Exception {
driver.quit();
}
@Test
public void test() throws InterruptedException {
driver.get("https://tr-tr.facebook.com/");
String anasayfa = driver.getWindowHandle();//anasayfayı String olarak tutuyor.
System.out.println("açık tab sayısı " + driver.getWindowHandles().size());
Thread.sleep(3000);
driver.findElement(By.linkText("Çerezler İlkemizi")).click();// yeni bir sayfa açılıyor
Thread.sleep(3000);
System.out.println("Çerezler İlkemize tıkladıktan sonra");
System.out.println("açık tab sayısı " + driver.getWindowHandles().size());
Set<String> tablistesi = driver.getWindowHandles();
for(String child:tablistesi)
{
if(!child.equalsIgnoreCase(anasayfa))//ilk tab anasayfaya eşit o yüzden else e düşüyor, diğer tab eşit değil
{
driver.switchTo().window(child);
System.out.println("child id " + child);// id burda yazılıyor
System.out.println("child url " + driver.getCurrentUrl());// url
}
else {
System.out.println("Başka tab yok");
System.out.println("anasayfa id " + anasayfa);
}
Thread.sleep(3000);
}
//ilk tab anasayfa olduğu için "başka tab yok" diyor, sonraki tab için for döngüsünde id sini ve url ini yazdırıyor.
}
Click
Click fonksiyonu genelde yeni bir sayfa açtığı için sayfa yüklenene kadar bloke edilir. Yeni bir sayfa açan click fonksiyonlarında ilgili sayfayı maximize etmek daha sonra o sayfada findelement fonksiyonunun düzgün çalışmasına yardımcı olur çünkü aranan elementin sayfanın açık halinde bulunabilmesi gerekir.
Yorumlar
Yorum Gönder