Cari Elemen dengan Teks Pautan & Teks Pautan Separa di Selenium Webdriver

Isi kandungan:

Anonim

Apakah Teks Pautan di Selenium?

A Text Link di Selenium digunakan untuk mengenal pasti hiperpautan pada halaman web. Ia ditentukan dengan bantuan tanda sauh. Untuk membuat pautan hiperpautan di laman web, kita dapat menggunakan tanda sauh diikuti dengan teks Tautan.

Pautan yang Memadankan Kriteria

Pautan boleh diakses menggunakan padanan tepat atau sebahagian dari teks pautan mereka. Contoh di bawah memberikan senario di mana terdapat banyak perlawanan dan akan menjelaskan bagaimana WebDriver akan menangani mereka.

Dalam tutorial ini, kita akan mempelajari kaedah yang ada untuk mencari dan mengakses Pautan menggunakan Webdriver. Juga, kami akan membincangkan beberapa masalah umum yang dihadapi semasa mengakses Pautan dan akan membincangkan lebih lanjut mengenai cara menyelesaikannya.

Inilah yang akan anda pelajari-

  • Mengakses pautan menggunakan Padanan Teks Tepat: By.linkText ()
  • Mengakses pautan menggunakan Sepadan Teks Sepadan: By.partialLinkText ()
  • Cara mendapatkan Pautan berganda dengan Teks Pautan yang sama
  • Kepekaan kes untuk Teks Pautan
  • Pautan Di Luar dan Di Dalam Blok

Mengakses pautan menggunakan Padanan Teks Tepat: By.linkText ()

Mengakses pautan menggunakan teks pautan tepatnya dilakukan melalui kaedah By.linkText () . Walau bagaimanapun, jika terdapat dua pautan yang mempunyai teks pautan yang sama, kaedah ini hanya akan mengakses yang pertama. Pertimbangkan kod HTML di bawah

Apabila anda cuba menjalankan kod WebDriver di bawah, anda akan mengakses pautan "klik di sini" pertama

Kod:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;kelas awam MyClass {utama kekosongan statik awam (String [] args) {String baseUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Pemacu WebDriver = ChromeDriver baru ();driver.get (baseUrl);driver.findElement (By.linkText ("klik di sini")). klik ();System.out.println ("tajuk halaman adalah: + driver.getTitle ());driver.quit ();}}

Inilah cara ia berfungsi-

Hasilnya, anda akan dibawa ke Google secara automatik.

Mengakses pautan menggunakan Sepadan Teks Sepadan: By.partialLinkText ()

Mengakses pautan menggunakan sebahagian daripada teks pautan mereka dilakukan menggunakan kaedah By.partialLinkText () . Sekiranya anda menentukan teks pautan separa yang mempunyai banyak padanan, hanya pertandingan pertama yang akan diakses. Pertimbangkan kod HTML di bawah.

Apabila anda melaksanakan kod WebDriver di bawah, anda masih akan dibawa ke Google.

Kod:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;kelas awam P1 {utama kekosongan statik awam (String [] args) {String baseUrl = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Pemacu WebDriver = ChromeDriver baru ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("di sini")). klik ();System.out.println ("Tajuk halaman adalah: + driver.getTitle ());driver.quit ();}}

Cara mendapatkan Pautan berganda dengan Teks Pautan yang sama

Jadi, bagaimana mengatasi masalah di atas? Sekiranya terdapat banyak pautan dengan teks pautan yang sama, dan kami ingin mengakses pautan selain daripada yang pertama, bagaimana kita melakukannya?

Dalam kes seperti ini, secara amnya, pencari yang berbeza iaitu… By.xpath (), By.cssSelector () atau By.tagName () digunakan.

Yang paling biasa digunakan ialah By.xpath (). Ia adalah yang paling dipercayai tetapi kelihatan kompleks dan tidak boleh dibaca juga.

Kepekaan kes untuk Teks Pautan

Parameter untuk By.linkText () dan By.partialLinkText () kedua-dua peka huruf besar kecil, yang bermaksud bahawa permodalan penting. Contohnya, di laman utama Mercury Tours, terdapat dua pautan yang mengandungi teks "egis" - satu adalah pautan "DAFTAR" yang terdapat di menu atas, dan yang lain adalah pautan "Daftar di sini" yang terdapat di bahagian kanan bawah halaman.

Walaupun kedua-dua pautan mengandungi urutan watak "egis", satu adalah kaedah "By.partialLinkText ()" akan mengakses kedua-dua pautan ini secara berasingan bergantung pada penggunaan huruf besar. Lihat contoh kod di bawah.

Kod

utama kekosongan statik awam (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Pemacu WebDriver = ChromeDriver baru ();driver.get (baseUrl);Rentetan theLinkText = driver.findElement (Oleh.partialLinkText ("egis")).getTeks ();System.out.println (theLinkText);theLinkText = driver.findElement (Oleh.partialLinkText ("EGIS")).getTeks ();System.out.println (theLinkText);driver.quit ();}

Pautan Di Luar dan Di Dalam Blok

Standard HTML5 terkini membolehkan tag diletakkan di dalam dan di luar tag tahap blok seperti

,

, atau

. Kaedah "By.linkText ()" dan "By.partialLinkText ()" dapat mengakses pautan yang terletak di luar dan di dalam elemen tahap blok ini. Pertimbangkan kod HTML di bawah.

Kod WebDriver di bawah mengakses kedua-dua pautan ini menggunakan kaedah By.partialLinkText ().

Kod:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;kelas awam MyClass {utama kekosongan statik awam (String [] args) {String baseUrl = "http://demo.guru99.com/test/block.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Pemacu WebDriver = ChromeDriver baru ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("Di dalam")). klik ();System.out.println (driver.getTitle ());pemandu. navigasi (). belakang ();driver.findElement (By.partialLinkText ("Di Luar")). klik ();System.out.println (driver.getTitle ());driver.quit ();}}

Hasil di atas mengesahkan bahawa kedua-dua pautan berjaya diakses kerana tajuk halaman masing-masing telah diambil dengan betul.

Ringkasan

  • Pautan diakses menggunakan kaedah klik ().
  • Selain dari pencari yang tersedia untuk WebElement mana pun, Pautan juga mempunyai pencari berdasarkan teks pautan:
    • By.linkText () - mencari pautan berdasarkan padanan tepat teks pautan yang disediakan sebagai parameter.
    • By.partialLinkText () - mencari pautan berdasarkan padanan teks separa teks pautan.
  • Kedua-dua pencari di atas adalah peka huruf besar-kecil.
  • Sekiranya terdapat banyak perlawanan, By.linkText () dan By.partialLinkText () hanya akan memilih perlawanan pertama. Dalam kes sedemikian di mana terdapat banyak pautan dengan teks pautan yang sama, pencari lain berdasarkan xpath, CSS digunakan.
  • kaedah findElements () & By.tagName ("a") menemui semua elemen dalam halaman yang sesuai dengan kriteria pencari
  • Pautan boleh diakses oleh By.linkText () dan By.partialLinkText () sama ada ia berada di dalam atau di luar elemen tahap blok.