Leidke elemendid lingi teksti ja osalise lingi teksti järgi Selenium
Mis on lingi tekst Selenium?
A Link tekst sisse Selenium kasutatakse veebilehel olevate hüperlinkide tuvastamiseks. See määratakse ankrusildi abil. Hüperlinkide loomiseks veebilehel saame kasutada ankurmärgendit, millele järgneb link Tekst.
Kriteeriumile vastavad lingid
Linkidele pääseb juurde, kasutades nende lingi teksti täpset või osalist vastet. Allolevad näited pakuvad stsenaariume, kus oleks mitu vastet, ja selgitavad, kuidas WebDriver nendega tegeleb.
Selles õpetuses õpime saadaolevaid meetodeid veebidraiveri abil linkide leidmiseks ja neile juurde pääsemiseks. Samuti käsitleme mõningaid levinumaid probleeme, millega linkidele juurdepääsul kokku puutute, ja arutame edasi, kuidas neid lahendada.
Täitke lingi tekst Selenium – By.linkText()
Juurdepääs linkidele nende täpse lingiteksti abil toimub meetodi By.linkText() kaudu. Kui aga on kaks linki, millel on sama lingi tekst, pääseb see meetod juurde ainult esimesele. Mõelge allolevale HTML-koodile
Kui proovite allolevat WebDriveri koodi käivitada, pääsete juurde esimesele lingile "klõpsake siin".
kood:
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 = "http://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(); } }
Siin on, kuidas see töötab -
Selle tulemusena suunatakse teid automaatselt Google'i.
Täitke osaline lingi tekst Selenium – By.partialLinkText()
Juurdepääs linkidele, kasutades osa nende lingi tekstist, toimub kasutades By.partialLinkText() meetod. Kui määrate osalise lingi teksti, millel on mitu vastet, pääseb juurde ainult esimesele vastele. Mõelge allolevale HTML-koodile.
Kui käivitate alloleva WebDriveri koodi, suunatakse teid ikkagi Google'i.
kood:
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 = "http://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(); } }
Kuidas hankida mitu linki sama lingitekstiga
Niisiis, kuidas ülaltoodud probleemist mööda saada? Kui sama lingitekstiga on mitu linki ja me tahame juurde pääseda muudele linkidele peale esimese, kuidas seda teha?
Sellistel juhtudel kasutatakse üldiselt erinevaid lokaatoreid, nimelt… By.xpath(), By.cssSelector() või By.tagName().
Kõige sagedamini kasutatav on By.xpath(). See on kõige usaldusväärsem, kuid tundub ka keeruline ja mitteloetav.
Lingi teksti tõstutundlikkus
Parameetrid jaoks By.linkText() ja By.partialLinkText() on mõlemad tõstutundlikud, mis tähendab, et suurtähtede kasutamine on oluline. Näiteks sisse Mercury Toursi kodulehel on kaks linki, mis sisaldavad teksti “egis” – üks on ülamenüüs olev link “REGISTREERU” ja teine lehe paremas alanurgas olev link “Registreeri siin”.
Kuigi mõlemad lingid sisaldavad märgijada "egis", pääseb üks meetod "By.partialLinkText()" neile kahele lingile eraldi, olenevalt märkide suurtähtedest. Vaadake allpool olevat näidiskoodi.
kood
public static void main(String[] args) { String baseUrl = "http://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(); }
Lingid plokist väljas ja sees
Uusim HTML5-standard lubab silte paigutada plokitasemel siltide (nt , , või ) sisse ja väljapoole. Meetodid "By.linkText()" ja "By.partialLinkText()" pääsevad juurde lingile, mis asub nendest plokitaseme elementidest väljaspool ja sees. Mõelge allolevale HTML-koodile.
Allolev WebDriveri kood pääseb mõlemale lingile, kasutades meetodit By.partialLinkText().
kood:
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 = "http://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(); } }
Ülaltoodud väljund kinnitab, et mõlemale lingile pääseti edukalt juurde, kuna nende vastavad lehepealkirjad leiti õigesti.
kokkuvõte
- Linkidele pääseb juurde meetodi click() abil.
- Lisaks iga WebElementi jaoks saadaolevatele lokaatoritele on linkidel ka lingi tekstipõhised lokaatorid:
- By.linkText() – tuvastab lingid parameetrina antud lingi teksti täpse vaste alusel.
- By.partialLinkText() – otsib lingid lingi teksti osalise teksti vaste põhjal.
- Mõlemad ülaltoodud lokaatorid on tõstutundlikud.
- Kui vasteid on mitu, valivad By.linkText() ja By.partialLinkText() ainult esimese vaste. Sellistel juhtudel, kui on olemas mitu sama lingitekstiga linki, kasutatakse muid xpath-il põhinevaid lokaatoreid, CSS-i.
- Meetod findElements() & By.tagName(“a”) leiab lehelt kõik lokaatori kriteeriumidele vastavad elemendid
- Linkidele pääseb juurde By.linkText() ja By.partialLinkText() abil, olenemata sellest, kas need on plokitaseme elementide sees või väljaspool.