Jak najít prvek pomocí textu se selenem

How Find Element Text With Selenium



Umístění a výběr prvků z webové stránky je klíčem k webovému škrábání pomocí selenu. V Selenium můžete vybrat prvky pomocí názvu značky, ID, názvu třídy, voliče XPath, selektoru CSS atd. Se Seleniem můžete také vybrat prvky, které mají konkrétní text. To je užitečné pro snadný výběr odkazů a tlačítek z webové stránky. I když se struktura stránky změní, pokud zůstane text prvku webové stránky stejný, měl by váš volič fungovat dobře. To je výhoda výběru odkazů a tlačítek pomocí textu v selenu.

V tomto článku vám ukážu, jak vyhledat a vybrat prvky z webových stránek pomocí textu v Selenu s knihovnou Selenium python. Začněme tedy.







Předpoklady:

K vyzkoušení příkazů a příkladů tohoto článku musíte mít:



  1. Distribuce Linuxu (nejlépe Ubuntu) nainstalovaná ve vašem počítači.
  2. Ve vašem počítači je nainstalován Python 3.
  3. Na vašem počítači je nainstalován PIP 3.
  4. Krajta virtualenv balíček nainstalovaný ve vašem počítači.
  5. Ve vašem počítači jsou nainstalovány webové prohlížeče Mozilla Firefox nebo Google Chrome.
  6. Musíte vědět, jak nainstalovat ovladač Firefox Gecko nebo Chrome Web Driver.

Chcete -li splnit požadavky 4, 5 a 6, přečtěte si můj článek Úvod do selenu v Pythonu 3 .



Můžete najít mnoho článků na jiná témata LinuxHint.com . Pokud potřebujete pomoc, nezapomeňte je zkontrolovat.





Nastavení adresáře projektu:

Aby bylo vše organizované, vytvořte nový adresář projektu selen-text-select/ jak následuje:

$mkdir -pvselen-text-select/Řidiči



Přejděte na selen-text-select/ adresář projektu takto:

$CDselen-text-select/

Vytvořte virtuální prostředí Pythonu v adresáři projektu následujícím způsobem:

$virtualenv .venv

Virtuální prostředí aktivujte následovně:

$zdroj.venv/dopoledne/aktivovat

Nainstalujte knihovnu Selenium Python pomocí PIP3 následujícím způsobem:

$ pip3 nainstalujte selen

Stáhněte a nainstalujte veškerý požadovaný webový ovladač do souboru Řidiči/ adresář projektu. Ve svém článku jsem vysvětlil proces stahování a instalace webových ovladačů Úvod do selenu v Pythonu 3 .

Hledání prvků podle textu:

V této části vám ukážu několik příkladů hledání a výběru prvků webové stránky podle textu pomocí knihovny Selenium Python.

Začnu nejjednodušším příkladem výběru prvků webové stránky podle textu, výběrem odkazů z webové stránky.

Na přihlašovací stránce facebook.com máme odkaz Zapomenutý účet? Jak můžete vidět na obrázku níže. Vyberme tento odkaz se selenem.

Vytvořte nový skript Pythonu ex01.py a zadejte do něj následující řádky kódů.

zselenimportwebový ovladač
zselen.webový ovladač.běžný.klíče importKlíče
zselen.webový ovladač.běžný.podle importPodle
z čas importspát
prohlížeč=webový ovladač.Chrome(spustitelná_cesta='./drivers/chromedriver')
prohlížeč.dostat('https://www.facebook.com/')
zapomnělAccountLink=prohlížeč.find_element(Podle.XPATH, '
//*[text () = 'Zapomenutý účet?'] '
)
zapomnělAccountLink.send_keys(Klíče.VSTUP)

Jakmile budete hotovi, uložte ex01.py Python skript.

Řádek 1-4 importuje všechny požadované komponenty do programu Python.

Řádek 6 vytvoří Chrome prohlížeč objekt pomocí chromedriver binární z Řidiči/ adresář projektu.

Řádek 8 říká prohlížeči, aby načíst web facebook.com.

Řádek 10 najde odkaz s textem Zapomenutý účet? Pomocí voliče XPath. K tomu jsem použil volič XPath //*[text () = ‘Zapomenutý účet?‘] .

Volič XPath začíná na //, což znamená, že prvek může být kdekoli na stránce. The * symbol říká Selenium, aby vybral libovolný tag ( na nebo p nebo rozpětí, atd.), který odpovídá podmínce v hranatých závorkách [] . Zde je podmínkou, že text elementu se rovná Zapomenutý účet?

The text() Funkce XPath se používá k získání textu prvku.

Například, text() vrací Ahoj světe pokud vybere následující prvek HTML.

< na href='http://dummysite.com'>Ahoj světe</ na >

Řádek 11 odešle stisknutím klávesy na Zapomenutý účet? Odkaz.

Spusťte skript Python ex01.py s následujícím příkazem:

$ python ex01.py

Jak vidíte, webový prohlížeč vyhledá, vybere a stiskne klíč na Zapomenutý účet? Odkaz.

The Zapomenutý účet? Odkaz vede prohlížeč na následující stránku.

Stejným způsobem můžete snadno vyhledat prvky, které mají požadovanou hodnotu atributu.

Tady, Přihlásit se tlačítko je vstup prvek, který má hodnota atribut Přihlásit se . Podívejme se, jak vybrat tento prvek podle textu.

Vytvořte nový skript Pythonu ex02.py a zadejte do něj následující řádky kódů.

zselenimportwebový ovladač
zselen.webový ovladač.běžný.klíče importKlíče
zselen.webový ovladač.běžný.podle importPodle
z čas importspát
prohlížeč=webový ovladač.Chrome(spustitelná_cesta='./drivers/chromedriver')
prohlížeč.dostat('https://www.facebook.com/')
spát(5)
emailInput=prohlížeč.find_element(Podle.XPATH, '// vstup [@id =' email ']')
hesloVstup=prohlížeč.find_element(Podle.XPATH, '// vstup [@id =' projít ']')
přihlašovací tlačítko=prohlížeč.find_element(Podle.XPATH, '//*[@value =' Přihlásit se ']')
emailInput.send_keys('[email protected]')
spát(5)
hesloVstup.send_keys('tajný průkaz')
spát(5)
přihlašovací tlačítko.send_keys(Klíče.VSTUP)

Jakmile budete hotovi, uložte ex02.py Python skript.

Řádek 1-4 importuje všechny požadované součásti.

Řádek 6 vytvoří Chrome prohlížeč objekt pomocí chromedriver binární z Řidiči/ adresář projektu.

Řádek 8 říká prohlížeči, aby načíst web facebook.com.

Všechno se děje tak rychle, jakmile spustíte skript. Takže jsem použil spát() fungovat mnohokrát v ex02.py za zpoždění příkazů prohlížeče. Tímto způsobem můžete sledovat, jak vše funguje.

Řádek 11 najde textové pole pro zadání e -mailu a uloží odkaz na prvek do souboru emailInput proměnná.

Řádek 12 najde textové pole pro zadání e -mailu a uloží odkaz na prvek do souboru emailInput proměnná.

Řádek 13 najde vstupní prvek, který má atribut hodnota z Přihlásit se pomocí voliče XPath. K tomu jsem použil volič XPath //*[@value = ‘Přihlásit se‘] .

Volič XPath začíná na // . To znamená, že prvek může být kdekoli na stránce. The * symbol říká Selenium, aby vybral libovolný tag ( vstup nebo p nebo rozpětí, atd.), který odpovídá podmínce v hranatých závorkách [] . Zde je podmínkou atribut elementu hodnota je rovný Přihlásit se .

Linka 15 odešle vstup[chráněno emailem]do textového pole pro zadání e -mailu a řádek 16 zpožďuje další operaci.

Řádek 18 odešle vstupní tajný průchod do textového pole pro zadání hesla a řádek 19 zpozdí další operaci.

Linka 21 odešle stiskněte klávesu pro přihlášení.

Spusťte ex02.py Skript Python s následujícím příkazem:

$ python3 ex02.py

Jak vidíte, textová pole e -mailu a hesla jsou naplněna našimi figurínovými hodnotami a Přihlásit se je stisknuto tlačítko.

Poté stránka přejde na následující stránku.

Hledání prvků podle částečného textu:

V předchozí části jsem vám ukázal, jak najít prvky podle konkrétního textu. V této části vám ukážu, jak najít prvky z webových stránek pomocí částečného textu.

V příkladu ex01.py „Hledal jsem prvek odkazu, který obsahuje text Zapomenutý účet? . Můžete hledat stejný odkazový prvek pomocí částečného textu, jako je Zapomenutý účet . K tomu můžete použít obsahuje () Funkce XPath, jak je uvedeno v řádku 10 ex03.py . Zbytek kódů je stejný jako v ex01.py . Výsledky budou stejné.

V řádku 10 z ex03.py , podmínky výběru používaly obsahuje (zdroj, text) Funkce XPath. Tato funkce má 2 argumenty, zdroj, a text .

The obsahuje () funkce kontroluje, zda text uvedený ve druhém argumentu se částečně shoduje s zdroj hodnota v prvním argumentu.

Zdrojem může být text prvku ( text() ) nebo hodnota atributu prvku ( @attr_name ).

v ex03.py , zkontroluje se text prvku.

Další užitečnou funkcí XPath k nalezení prvků z webové stránky pomocí částečného textu je začíná na (zdroj, text) . Tato funkce má stejné argumenty jako obsahuje () funkce a používá se stejným způsobem. Jediným rozdílem je, že začíná s() funkce kontroluje, zda druhý argument text je počáteční řetězec prvního argumentu zdroj .

Přepsal jsem příklad ex03.py k vyhledání prvku, pro který text začíná Zapomenutý, jak můžete vidět v řádku 10 ex04.py . Výsledek je stejný jako v ex02 a ex03.py .

Také jsem přepsal ex02.py tak, že hledá vstupní prvek, pro který hodnota atribut začíná na Záznam, jak můžete vidět v řádku 13 z ex05.py . Výsledek je stejný jako v ex02.py .

Závěr:

V tomto článku jsem vám ukázal, jak pomocí knihovny Selenium Python najít a vybrat prvky z webových stránek podle textu. Nyní byste měli být schopni najít prvky z webových stránek podle konkrétního textu nebo částečného textu pomocí knihovny Selenium Python.