Tekst linku i częściowy tekst linku w Selenium
⚡ Inteligentne podsumowanie
Tekst linku i częściowy tekst linku w Selenium Lokalizuje hiperłącza na stronie internetowej za pomocą tekstu zakotwiczenia. Metoda By.linkText() dopasowuje cały tekst, podczas gdy By.partialLinkText() dopasowuje jego fragment. Oba lokalizatory rozróżniają wielkość liter i zwracają pierwsze dopasowanie.
W czym jest tekst łącza Selenium?
A Link Tekst w Selenium służy do identyfikacji hiperłączy na stronie internetowej. Określa się to za pomocą znacznika kotwiczącego. Do tworzenia hiperłączy na stronie internetowej możemy użyć znacznika zakotwiczenia, po którym następuje tekst łącza.
Linki spełniające kryterium
Dostęp do łączy można uzyskać za pomocą dokładnego lub częściowego dopasowania tekstu łącza. Poniższe przykłady przedstawiają scenariusze, w których istnieje wiele dopasowań, i wyjaśniają, jak WebDriver sobie z nimi poradzi.
W tym samouczku poznamy dostępne metody wyszukiwania łączy i uzyskiwania do nich dostępu za pomocą sterownika internetowego. Omówimy także niektóre typowe problemy napotykane podczas uzyskiwania dostępu do Links i będziemy dalej omawiać, jak je rozwiązać.
Pełny tekst łącza w Selenium – By.linkText()
Dostęp do linków przy użyciu dokładnego tekstu linku odbywa się za pomocą metody By.linkText().. Jeśli jednak istnieją dwa łącza o tym samym tekście, ta metoda umożliwi dostęp tylko do pierwszego. Rozważ poniższy kod HTML
Gdy spróbujesz uruchomić poniższy kod WebDrivera, uzyskasz dostęp do pierwszego linku „kliknij tutaj”.
Code:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class MyClass { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/link.html"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); driver.findElement(By.linkText("click here")).click(); System.out.println("title of page is: " + driver.getTitle()); driver.quit(); } }
Oto jak to działa-
W rezultacie zostaniesz automatycznie przeniesiony do Google.
Wypełnij częściowy tekst łącza w Selenium – By.partialLinkText()
Dostęp do linków za pomocą części tekstu linku odbywa się za pomocą By.częściowyLinkText() metoda. Jeśli określisz częściowy tekst łącza, który ma wiele dopasowań, dostępny będzie tylko pierwszy dopasowania. Rozważ poniższy kod HTML.
Po wykonaniu poniższego kodu WebDriver nadal zostaniesz przeniesiony do Google.
Code:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class P1 { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/accessing-link.html"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); driver.findElement(By.partialLinkText("here")).click(); System.out.println("Title of page is: " + driver.getTitle()); driver.quit(); } }
Jak uzyskać wiele linków z tym samym tekstem linku
Jak zatem obejść powyższy problem? W przypadku, gdy istnieje wiele linków z tym samym tekstem linku, a chcemy uzyskać dostęp do linków innych niż pierwszy, jak to zrobić?
W takich przypadkach używa się zazwyczaj różnych lokalizatorów, np. By.xpath(), By.cssSelector() lub By.tagName().
Najczęściej używany jest By.xpath(). Jest najbardziej niezawodny, ale wygląda na skomplikowany i nieczytelny.
Uwzględniana jest wielkość liter w tekście łącza
Parametry dla Według.linkText() oraz By.częściowyLinkText() w obu przypadkach rozróżniana jest wielkość liter, co oznacza, że wielkość liter ma znaczenie. Na przykład w Mercury Na stronie głównej Tours znajdują się dwa linki zawierające tekst „egis” – jeden to link „ZAREJESTRUJ SIĘ” znajdujący się w górnym menu, a drugi to link „Zarejestruj się tutaj” znajdujący się w prawej dolnej części strony.
Chociaż oba linki zawierają sekwencję znaków „egis”, metoda „By.partialLinkText()” będzie odwoływać się do nich osobno, w zależności od wielkości liter. Zobacz przykładowy kod poniżej.
Code
public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/newtours/"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); String theLinkText = driver.findElement(By .partialLinkText("egis")) .getText(); System.out.println(theLinkText); theLinkText = driver.findElement(By .partialLinkText("EGIS")) .getText(); System.out.println(theLinkText); driver.quit(); }
Linki na zewnątrz i wewnątrz bloku
Najnowszy standard HTML5 umożliwia umieszczanie tagów wewnątrz i na zewnątrz tagów blokowych, takich jak , lub . Metody „By.linkText()” i „By.partialLinkText()” umożliwiają dostęp do łącza znajdującego się na zewnątrz i wewnątrz tych elementów blokowych. Rozważ poniższy kod HTML.
Poniższy kod WebDrivera umożliwia dostęp do obu tych łączy przy użyciu metody By.partialLinkText().
Code:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class MyClass { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/block.html"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); driver.findElement(By.partialLinkText("Inside")).click(); System.out.println(driver.getTitle()); driver.navigate().back(); driver.findElement(By.partialLinkText("Outside")).click(); System.out.println(driver.getTitle()); driver.quit(); } }
Dane wyjściowe potwierdzają, że dostęp do obu linków przebiegł pomyślnie, ponieważ tytuły odpowiednich stron zostały pobrane poprawnie.



.png)
.png)

.png)
.png)
.png)
.png)
.png)

.png)
.png)
.png)
.png)
.png)