Selen

Jak najít prvek podle textu se selenem

Jak najít prvek podle textu se selenem
Nalezení a výběr prvků z webové stránky je klíčem ke škrábání webu se selenem. Prvky můžete vybrat pomocí názvu značky, ID, názvu třídy, selektoru XPath, selektoru CSS atd. v selenu. Selenem 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 text prvku webové stránky zůstane stejný, měl by váš selektor 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 selenu python. Pojďme tedy začít.

Předpoklady:

Chcete-li vyzkoušet příkazy a příklady tohoto článku, musíte mít:

  1. Ve vašem počítači nainstalovaná distribuce Linuxu (nejlépe Ubuntu).
  2. Python 3 nainstalovaný ve vašem počítači.
  3. PIP 3 nainstalovaný ve vašem počítači.
  4. Krajta virtuální balíček nainstalovaný v 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 webový ovladač Chrome.

Pro splnění požadavků 4, 5 a 6 si přečtěte můj článek Úvod do selenu v Pythonu 3.

Na LinuxHint najdete mnoho článků o dalších tématech.com. Nezapomeňte je zkontrolovat, pokud potřebujete pomoc.

Nastavení adresáře projektu:

Chcete-li mít vše uspořádané, vytvořte nový adresář projektu selen-text-select / jak následuje:

$ mkdir -pv selenium-text-select / ovladače

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

$ cd selenium-text-select /

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

$ virtualenv .venv

Aktivujte virtuální prostředí následujícím způsobem:

$ zdroj .venv / bin / aktivovat

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

$ pip3 nainstalujte selen

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

Hledání prvků podle textu:

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

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

Na přihlašovací stránce facebooku.com, máme odkaz Zapomenutý účet? Jak vidíte na následujícím obrázku. Vyberte tento odkaz se selenem.

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

z webového ovladače pro import selenu
ze selenu.webdriver.běžný.klíče importovat klíče
ze selenu.webdriver.běžný.importem do
od času importu spánku
prohlížeč = webdriver.Chrome (executable_path = "./ drivers / chromedriver ")
prohlížeč.get ("https: // www.Facebook.com / ")
forgetAccountLink = prohlížeč.find_element (podle.XPATH, “
// * [text () = 'Zapomenutý účet?'] ")
forgetAccountLink.send_keys (klíče.ENTER)

Až budete hotovi, uložte ex01.py Skript v Pythonu.

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

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

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

Řádek 10 najde odkaz, který má text Zapomenutý účet? Pomocí selektoru XPath. K tomu jsem použil selektor XPath // * [text () = 'Zapomenutý účet?'].

Volič XPath začíná na //, což znamená, že prvek může být kdekoli na stránce. The * symbol říká selenu, aby vybral libovolnou značku (A nebo p nebo rozpětí, atd.), který odpovídá podmínce uvnitř hranatých závorek []. Tady je podmínka, že text prvku se rovná Zapomenutý účet?

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

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

Ahoj světe

Řádek 11 odesílá stiskněte klávesu k Zapomenutý účet? Odkaz.

Spusťte skript Pythonu 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 přenese 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 tento prvek vybrat pomocí textu.

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

z webového ovladače pro import selenu
ze selenu.webdriver.běžný.klíče importovat klíče
ze selenu.webdriver.běžný.podle importu
od času importu spánku
prohlížeč = webdriver.Chrome (executable_path = "./ drivers / chromedriver ")
prohlížeč.get ("https: // www.Facebook.com / ")
spánek (5)
emailInput = prohlížeč.find_element (podle.XPATH, "// input [@ id = 'email']")
passwordInput = prohlížeč.find_element (podle.XPATH, "// input [@ id = 'pass']")
loginButton = prohlížeč.find_element (podle.XPATH, "// * [@ value = 'Přihlásit se]]")
emailInput.send_keys ('[email protected]')
spánek (5)
heslo.send_keys ('secret-pass')
spánek (5)
loginButton.send_keys (klíče.ENTER)

Až budete hotovi, uložte ex02.py Skript v Pythonu.

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

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

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

Jakmile spustíte skript, všechno se děje tak rychle. Takže jsem použil spát() funkce mnohokrát v ex02.py pro 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 v souboru emailInput proměnná.

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

Řádek 13 najde vstupní prvek, který má atribut hodnota z Přihlásit se pomocí selektoru XPath. K tomu jsem použil selektor 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á selenu, aby vybral libovolnou značku (vstup nebo p nebo rozpětí, atd.), který odpovídá podmínce uvnitř hranatých závorek []. Zde je podmínkou atribut prvku hodnota je rovný Přihlásit se.

Řádek 15 odešle vstup [chráněný e-mailem] do textového pole pro zadávání e-mailů a řádek 16 zpozdí další operaci.

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

Řádek 21 odesílá stisknutím klávesy přihlašovací tlačítko.

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

$ python3 ex02.py

Jak vidíte, textová pole e-mailu a hesla jsou vyplněna našimi fiktivní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ý má text Zapomenutý účet?. Stejný prvek odkazu můžete vyhledat pomocí částečného textu, například Zapomenuté podle. K tomu můžete použít obsahuje () Funkce XPath, jak je znázorněno na řádku 10 ex03.py. Zbytek kódů je stejný jako v ex01.py. Výsledky budou stejné.

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

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

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

v ex03.py, zkontroluje se text prvku.

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

Přepsal jsem příklad ex03.py vyhledat prvek, pro který text začíná Zapomenutý, jak vidíte na řádku 10 z 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 Log, jak vidíte 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 najít a vybrat prvky z webových stránek pomocí textu v knihovně Selenium Python. 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.

Hry Jak používat AutoKey k automatizaci linuxových her
Jak používat AutoKey k automatizaci linuxových her
AutoKey je nástroj pro automatizaci stolních počítačů pro systémy Linux a X11, programovaný v programech Python 3, GTK a Qt. Pomocí jeho funkcí skript...
Hry Jak zobrazit počítadlo FPS v linuxových hrách
Jak zobrazit počítadlo FPS v linuxových hrách
Hraní na Linuxu získalo velký tlak, když společnost Valve v roce 2012 oznámila podporu systému Linux pro klienta Steam a jejich hry. Od té doby se mno...
Hry Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Úvod do hry Civilization 6 je moderní pojetí klasického konceptu představeného v sérii her Age of Empires. Myšlenka byla docela jednoduchá; začali bys...