Verisi sürekli değişen tablolarda XPath kullanılması gerekir. Bunu da tablonun satır ve sütun sayı bilgileriyle yapmak daha doğru olur.
@Test
public void dinamikTablo() throws InterruptedException{
driver.get("http://xxx.php");
//Dinamik tablodaki sütun ve satır sayısını bulma
List<WebElement> sutun = driver.findElements(By.xpath("//*[@id=\"leftcontainer\"]/table/thead/tr/th"));
System.out.println("Sütun sayısı: " + sutun.size());
List<WebElement> satir = driver.findElements(By.xpath("//*[@id=\"leftcontainer\"]/table/tbody/tr"));
System.out.println("Satir sayisi: " + satir.size());
************
Çıktı:
Sütun sayısı: 5
Satir sayisi: 26
//Dinamik tablodaki 7. satırdaki şirketin adı ve kapanış değerlerini bulma
System.out.println("7. satırdaki şirket: " + driver.findElement(By.xpath("//*[@id=\"leftcontainer\"]/table/tbody/tr[7]/td[1]")).getText());
System.out.println("7. satırdaki şirketin Prev Close değeri: " + driver.findElement(By.xpath("//*[@id=\"leftcontainer\"]/table/tbody/tr[7]/td[3]")).getText());
/*Burada her kod çalıştırıldığında farklı değer gelir, tablo dinamik olduğu için
***************
Çıktı:
7. satırdaki şirket: Escorts Ltd.
7. satırdaki şirketin Kapanış değeri: 113.4
//Dinamik tablodaki belirli bir sütundaki maximum değeri bulma
double r=0;
for (int i =0; i<satir.size();i++)
{
String max = driver.findElement(By.xpath("//*[@id=\"leftcontainer\"]/table/tbody/tr["+(i+1)+"]/td[4]")).getText();
double maxsayi=0;
maxsayi = Double.valueOf(max);
System.out.println("Price değerleri " + i + ": " + maxsayi);
if(maxsayi>r)
{
r= maxsayi;
}
}
System.out.println("Maximum current price is : "+ r);
*****************************
//Bütün tablonun her satırındaki değerleri sırasıyla getirme
driver.get("xxx.html");
List<WebElement> satirlar = driver.findElements(By.xpath("/html/body/table/tbody/tr"));
int satirsayisi = satirlar.size();
System.out.println("Kaç satır var: "+ satirsayisi);
for (int i=1; i<=satirsayisi; i++)
{
List<WebElement> sutunlar = driver.findElements(By.xpath("/html/body/table/tbody/tr["+i+"]/td"));
int sutunsayisi = sutunlar.size();
System.out.println("Kaç sütun var: "+ sutunsayisi);
for (int y=1; y<=sutunsayisi; y++)
System.out.println(driver.findElement(By.xpath("/html/body/table/tbody/tr["+i+"]/td["+y+"]")).getText());
}
}
**************
Çıktı:
Kaç satır var: 5
Kaç sütun var: 3
1
2
3
Kaç sütun var: 3
4
5
6
Kaç sütun var: 2
5
6
Kaç sütun var: 3
6
7
8
Kaç sütun var: 1
7
Tablo 1:
Şirket | Grup | Kapanış | Şimdiki Ücret | % Değişim |
---|---|---|---|---|
IL&FS Transportation | A | 337.4 | 66.5 | + 5.4 |
GRUH Finance Li | A | 383.8 | 998.9 | + 2.3 |
IDFC Bank | A | 351.4 | 715.9 | + 5.1 |
YES Bank Ltd. | A | 697.9 | 669.3 | + 3.2 |
IRB Infrastructure | A | 271 | 724.8 | + 3.1 |
Escorts Ltd. | A | 113.4 | 890.3 | + 5.1 |
Cox & Kings L | A | 867 | 900.8 | + 5.5 |
Bharat Electroni | A | 176.5 | 849 | + 7.5 |
Nestle India | A | 64.8 | 187.3 | + 7.6 |
Cox & Kings L | A | 749.4 | 729.5 | + 9.5 |
JK Tyre & Industries | A | 687 | 601.4 | + 6 |
Navin Fluorine Inter | A | 416.7 | 865.3 | + 8.9 |
NIIT Technologies | A | 966.9 | 117.2 | + 9.4 |
DCB Bank | A | 853.2 | 760.2 | + 2.4 |
UCO Bank | A | 358 | 719.6 | + 9 |
Coffee Day Enterpris | A | 53.8 | 538.6 | + 4.1 |
Kirloskar Oil Engine | A | 134.1 | 102.8 | + 7.7 |
Repco Home Finance L | A | 96.2 | 449.9 | + 8.9 |
Ajanta Pharma Lt | A | 161.3 | 838 | + 4.4 |
CESC Ltd. | A | 817 | 490.5 | + 4.7 |
JaiprakashAssociates | A | 247.3 | 961.1 | + 7.1 |
Vakrangee | A | 888.3 | 652.9 | + 3 |
Hind. Petrol | A | 593.5 | 508.2 | + 3.4 |
Dewan Housing | A | 902.8 | 253.8 | + 7.6 |
IIFL Holdings | A | 450.3 | 67.6 | + 5.8 |
REC | A | 416.2 | 572.3 | + 8.4 |
@Test
public void dinamikTablo() throws InterruptedException{
driver.get("http://xxx.php");
//Dinamik tablodaki sütun ve satır sayısını bulma
List<WebElement> sutun = driver.findElements(By.xpath("//*[@id=\"leftcontainer\"]/table/thead/tr/th"));
System.out.println("Sütun sayısı: " + sutun.size());
List<WebElement> satir = driver.findElements(By.xpath("//*[@id=\"leftcontainer\"]/table/tbody/tr"));
System.out.println("Satir sayisi: " + satir.size());
************
Çıktı:
Sütun sayısı: 5
Satir sayisi: 26
**************
//Dinamik tablodaki 7. satırdaki şirketin adı ve kapanış değerlerini bulma
System.out.println("7. satırdaki şirket: " + driver.findElement(By.xpath("//*[@id=\"leftcontainer\"]/table/tbody/tr[7]/td[1]")).getText());
System.out.println("7. satırdaki şirketin Prev Close değeri: " + driver.findElement(By.xpath("//*[@id=\"leftcontainer\"]/table/tbody/tr[7]/td[3]")).getText());
/*Burada her kod çalıştırıldığında farklı değer gelir, tablo dinamik olduğu için
***************
Çıktı:
7. satırdaki şirket: Escorts Ltd.
7. satırdaki şirketin Kapanış değeri: 113.4
*****************
//Dinamik tablodaki belirli bir sütundaki maximum değeri bulma
double r=0;
for (int i =0; i<satir.size();i++)
{
String max = driver.findElement(By.xpath("//*[@id=\"leftcontainer\"]/table/tbody/tr["+(i+1)+"]/td[4]")).getText();
double maxsayi=0;
maxsayi = Double.valueOf(max);
System.out.println("Price değerleri " + i + ": " + maxsayi);
if(maxsayi>r)
{
r= maxsayi;
}
}
System.out.println("Maximum current price is : "+ r);
*****************************
Tablo 2:
1 | 2 | 3 |
4 | 5 | 6 |
5 | 6 | |
6 | 7 | 8 |
7 |
//Bütün tablonun her satırındaki değerleri sırasıyla getirme
driver.get("xxx.html");
List<WebElement> satirlar = driver.findElements(By.xpath("/html/body/table/tbody/tr"));
int satirsayisi = satirlar.size();
System.out.println("Kaç satır var: "+ satirsayisi);
for (int i=1; i<=satirsayisi; i++)
{
List<WebElement> sutunlar = driver.findElements(By.xpath("/html/body/table/tbody/tr["+i+"]/td"));
int sutunsayisi = sutunlar.size();
System.out.println("Kaç sütun var: "+ sutunsayisi);
for (int y=1; y<=sutunsayisi; y++)
System.out.println(driver.findElement(By.xpath("/html/body/table/tbody/tr["+i+"]/td["+y+"]")).getText());
}
}
**************
Çıktı:
Kaç satır var: 5
Kaç sütun var: 3
1
2
3
Kaç sütun var: 3
4
5
6
Kaç sütun var: 2
5
6
Kaç sütun var: 3
6
7
8
Kaç sütun var: 1
7
Yorumlar
Yorum Gönder