Selenium

Element voor tekst zoeken met selenium

Element voor tekst zoeken met selenium
Het lokaliseren en selecteren van elementen van de webpagina is de sleutel tot webscraping met Selenium. U kunt elementen selecteren met behulp van een tagnaam, ID, klassenaam, XPath-selector, CSS-selector, enz. in Selenium. Je kunt ook elementen selecteren die een specifieke tekst hebben met Selenium. Dit is handig om eenvoudig links en knoppen op de webpagina te selecteren. Zelfs als de paginastructuur verandert, zolang de tekst van het webpagina-element hetzelfde blijft, zou je selector prima moeten werken. Dit is het voordeel van het selecteren van links en knoppen met tekst in Selenium.

In dit artikel laat ik je zien hoe je elementen van webpagina's kunt lokaliseren en selecteren met tekst in Selenium met de Selenium python-bibliotheek. Dus laten we beginnen.

Vereisten:

Om de opdrachten en voorbeelden van dit artikel uit te proberen, moet u beschikken over:

  1. Een Linux-distributie (bij voorkeur Ubuntu) geïnstalleerd op uw computer.
  2. Python 3 geïnstalleerd op uw computer.
  3. PIP 3 geïnstalleerd op uw computer.
  4. Python virtueel pakket geïnstalleerd op uw computer.
  5. Mozilla Firefox- of Google Chrome-webbrowsers geïnstalleerd op uw computer.
  6. Moet weten hoe de Firefox Gecko Driver of Chrome Web Driver te installeren.

Lees mijn artikel om aan de vereisten 4, 5 en 6 te voldoen Inleiding tot selenium in Python 3.

Je kunt veel artikelen over de andere onderwerpen vinden op LinuxHint.com. Bekijk ze zeker als je hulp nodig hebt.

Een projectmap opzetten:

Maak een nieuwe projectdirectory om alles overzichtelijk te houden selenium-tekst-select/ als volgt:

$ mkdir -pv selenium-text-select/drivers

Navigeer naar de selenium-tekst-select/ projectmap als volgt:

$ cd selenium-tekst-select/

Maak als volgt een virtuele Python-omgeving in de projectdirectory:

$ virtuele omgeving .venv

Activeer de virtuele omgeving als volgt:

$ bron .venv/bin/activeren

Installeer de Selenium Python-bibliotheek als volgt met PIP3:

$ pip3 installeer selenium

Download en installeer alle vereiste webstuurprogramma's in de chauffeurs/ map van het project. Ik heb het proces van het downloaden en installeren van webstuurprogramma's uitgelegd in mijn artikel Inleiding tot selenium in Python 3.

Elementen zoeken op tekst:

In deze sectie ga ik u enkele voorbeelden laten zien van het zoeken en selecteren van webpagina-elementen op tekst met de Selenium Python-bibliotheek.

Ik ga beginnen met het eenvoudigste voorbeeld van het selecteren van webpagina-elementen op tekst, het selecteren van links op de webpagina.

Op de inlogpagina van facebook.com, we hebben een link Account vergeten? Zoals je kunt zien in de onderstaande schermafbeelding. Laten we deze link selecteren met Selenium.

Een nieuw Python-script maken ex01.py en typ de volgende regels codes erin:.

van selenium import webdriver
van selenium.webstuurprogramma.gemeenschappelijk.sleutels importeren Sleutels
van selenium.webstuurprogramma.gemeenschappelijk.door import Door
van tijd import slaap
browser = webstuurprogramma.Chrome(executable_path="./stuurprogramma's/chromedriver")
browser.get("https://www.facebook.com/")
vergetenAccountLink = browser.find_element(Door.XPATH, "
//*[text()='Account vergeten?']")
accountLink vergeten.send_keys(Sleutels.ENTER)

Als u klaar bent, slaat u de ex01.py Python-script.

Regel 1-4 importeert alle vereiste componenten in het Python-programma.

Lijn 6 maakt een Chrome browser object met behulp van de chromedriver binair van de chauffeurs/ map van het project.

Regel 8 vertelt de browser om de website facebook te laden.com.

Regel 10 vindt de link met de tekst Account vergeten? XPath-selector gebruiken. Daarvoor heb ik de XPath-selector gebruikt //*[text()='Account vergeten?'].

De XPath-selector begint met //, wat betekent dat het element overal op de pagina kan staan. De * symbool vertelt Selenium om een ​​tag te selecteren (een of p of span, enz.) die overeenkomt met de voorwaarde tussen de vierkante haken []. Hier is de voorwaarde dat de elementtekst gelijk is aan de Account vergeten?

De tekst() XPath-functie wordt gebruikt om de tekst van een element te krijgen.

Bijvoorbeeld, tekst() geeft terug Hallo Wereld als het het volgende HTML-element selecteert:.

Hallo Wereld

Lijn 11 stuurt de toets indrukken om de Account vergeten? Koppeling.

Voer het Python-script uit ex01.py met het volgende commando:

$ python ex01.py

Zoals u kunt zien, vindt, selecteert en drukt de webbrowser op de sleutel op de Account vergeten? Koppeling.

De Account vergeten? De link brengt de browser naar de volgende pagina.

Op dezelfde manier kunt u eenvoudig zoeken naar elementen die uw gewenste attribuutwaarde hebben.

Hier de Log in knop is een invoer element dat de heeft waarde attribuut Log in. Laten we eens kijken hoe we dit element op tekst kunnen selecteren.

Een nieuw Python-script maken ex02.py en typ de volgende regels codes erin:.

van selenium import webdriver
van selenium.webstuurprogramma.gemeenschappelijk.sleutels importeren Sleutels
van selenium.webstuurprogramma.gemeenschappelijk.door import Door
van tijd import slaap
browser = webstuurprogramma.Chrome(executable_path="./stuurprogramma's/chromedriver")
browser.get("https://www.facebook.com/")
slapen(5)
emailInput = browser.find_element(Door.XPATH, "//invoer[@id='e-mail']")
wachtwoordInput = browser.find_element(Door.XPATH, "//invoer[@id='pass']")
loginKnop = browser.find_element(Door.XPATH, "//*[@value='Inloggen']")
e-mailinvoer.send_keys('[e-mail beveiligd]')
slapen(5)
wachtwoordInvoer.send_keys('geheime-pas')
slapen(5)
loginKnop.send_keys(Sleutels.ENTER)

Als u klaar bent, slaat u de ex02.py Python-script.

Regel 1-4 importeert alle vereiste componenten.

Lijn 6 maakt een Chrome browser object met behulp van de chromedriver binair van de chauffeurs/ map van het project.

Regel 8 vertelt de browser om de website facebook te laden.com.

Alles gebeurt zo snel als je het script eenmaal hebt uitgevoerd. Dus ik heb de gebruikt slaap() functie vele malen in ex02.py voor het uitstellen van browsercommando's. Zo kun je zien hoe alles werkt.

Regel 11 vindt het e-mailinvoertekstvak en slaat een verwijzing van het element op in de e-mailinvoer variabele.

Regel 12 vindt het e-mailinvoertekstvak en slaat een verwijzing van het element op in de e-mailinvoer variabele.

Regel 13 vindt het invoerelement met het attribuut waarde van Log in XPath-selector gebruiken. Daarvoor heb ik de XPath-selector gebruikt //*[@value='Inloggen'].

De XPath-selector begint met //. Het betekent dat het element overal op de pagina kan staan. De * symbool vertelt Selenium om een ​​tag te selecteren (invoer of p of span, enz.) die overeenkomt met de voorwaarde tussen de vierkante haken []. Hier is de voorwaarde, het elementattribuut waarde is gelijk aan Log in.

Regel 15 stuurt de invoer [e-mail beveiligd] naar het tekstvak voor e-mailinvoer en regel 16 vertraagt ​​de volgende bewerking.

Regel 18 stuurt de invoergeheime pas naar het invoertekstvak voor het wachtwoord en regel 19 vertraagt ​​de volgende bewerking next.

Lijn 21 stuurt de druk op de toets om in te loggen.

Voer de ... uit ex02.py Python-script met het volgende commando:

$ python3 ex02.py

Zoals u kunt zien, zijn de tekstvakken voor e-mail en wachtwoord gevuld met onze dummy-waarden en de Log in knop is ingedrukt.

Vervolgens navigeert de pagina naar de volgende pagina.

Elementen zoeken op gedeeltelijke tekst:

In het eerdere gedeelte heb ik je laten zien hoe je elementen kunt vinden op specifieke tekst. In deze sectie laat ik je zien hoe je elementen van webpagina's kunt vinden met behulp van gedeeltelijke tekst.

In het voorbeeld, ex01.py, Ik heb gezocht naar het link-element met de tekst Account vergeten?. U kunt hetzelfde linkelement doorzoeken met gedeeltelijke tekst zoals text acc . vergeten. Om dat te doen, kunt u de bevat() XPath-functie, zoals weergegeven in regel 10 van ex03.py. De rest van de codes zijn hetzelfde als in ex01.py. De resultaten zullen hetzelfde zijn.

In lijn 10 van ex03.py, de selectievoorwaarde gebruikte de bevat (bron, tekst) XPath-functie. Deze functie heeft 2 argumenten, bron, en tekst.

De bevat() functie controleert of de tekst gegeven in het tweede argument komt gedeeltelijk overeen met de bron waarde in het eerste argument.

De bron kan de tekst van het element zijn (tekst()) of de attribuutwaarde van het element (@attr_name).

In ex03.py, de tekst van het element is aangevinkt.

Een andere handige XPath-functie om elementen van de webpagina te vinden met behulp van gedeeltelijke tekst is: begint-met(bron, tekst). Deze functie heeft dezelfde argumenten als de bevat() functie en wordt op dezelfde manier gebruikt. Het enige verschil is dat de begint met() functie controleert of het tweede argument tekst is de startreeks van het eerste argument bron.

Ik heb het voorbeeld herschreven ex03.py om te zoeken naar het element waar de tekst mee begint vergeten, zoals je kunt zien in regel 10 van ex04.py. Het resultaat is hetzelfde als in ex02 en ex03.py.

Ik heb ook herschreven ex02.py zodat het zoekt naar het invoerelement waarvoor de waarde attribuut begint met Logboek, zoals je kunt zien in regel 13 van ex05.py. Het resultaat is hetzelfde als in ex02.py.

Conclusie:

In dit artikel heb ik je laten zien hoe je elementen van webpagina's kunt vinden en selecteren op tekst met de Selenium Python-bibliotheek. Nu zou je in staat moeten zijn om elementen van webpagina's te vinden op specifieke tekst of gedeeltelijke tekst met de Selenium Python-bibliotheek.

Met WinMouse kunt u de beweging van de muisaanwijzer op Windows-pc aanpassen en verbeteren
Als u de standaardfuncties van uw muisaanwijzer wilt verbeteren, gebruik dan freeware WinMuis. Het voegt meer functies toe om u te helpen het meeste u...
Linkermuisknop werkt niet op Windows 10
Als u een speciale muis gebruikt met uw laptop of desktopcomputer, maar de linkermuisknop werkt niet not op Windows 10/8/7 om wat voor reden dan ook, ...
Cursor springt of beweegt willekeurig tijdens het typen in Windows 10
Als u merkt dat uw muiscursor vanzelf springt of beweegt, automatisch, willekeurig tijdens het typen op een Windows-laptop of -computer, dan kunnen en...