Selenyum ile Metinden Eleman Nasıl Bulunur?

How Find Element Text With Selenium



Web sayfasından öğeleri bulmak ve seçmek, Selenium ile web kazımanın anahtarıdır. Selenium'da bir etiket adı, kimlik, sınıf adı, XPath seçici, CSS seçici vb. kullanarak öğeleri seçebilirsiniz. Selenium ile belirli bir metni olan öğeleri de seçebilirsiniz. Bu, web sayfasından bağlantıları ve düğmeleri kolayca seçmek için yararlıdır. Sayfa yapısı değişse bile, web sayfası öğesinin metni aynı kaldığı sürece seçiciniz gayet iyi çalışmalıdır. Selenium'da metin kullanarak bağlantıları ve düğmeleri seçmenin avantajı budur.

Bu yazıda, Selenium python kütüphanesi ile Selenium'da metin kullanarak web sayfalarından elementlerin nasıl bulunacağını ve seçileceğini göstereceğim. Öyleyse başlayalım.







Önkoşullar:

Bu makaledeki komutları ve örnekleri denemek için şunlara sahip olmanız gerekir:



  1. Bilgisayarınızda kurulu bir Linux dağıtımı (tercihen Ubuntu).
  2. Python 3 bilgisayarınızda yüklü.
  3. Bilgisayarınızda yüklü PIP 3.
  4. piton sanal ortam Bilgisayarınızda yüklü olan paket.
  5. Bilgisayarınızda yüklü Mozilla Firefox veya Google Chrome web tarayıcıları.
  6. Firefox Gecko Sürücüsünü veya Chrome Web Sürücüsünü nasıl kuracağınızı bilmelisiniz.

4, 5 ve 6 numaralı gereksinimleri yerine getirmek için makalemi okuyun Python 3'te Selenyum'a Giriş .



Diğer konularda birçok makale bulabilirsiniz. LinuxHint.com . Herhangi bir yardıma ihtiyacınız olursa onları kontrol ettiğinizden emin olun.





Bir Proje Dizini Ayarlama:

Her şeyi düzenli tutmak için yeni bir proje dizini oluşturun selenyum-metin-seçimi/ aşağıdaki gibi:

$mkdir -pvselenyum-metin-seçimi/sürücüler



Şuraya gidin: selenyum-metin-seçimi/ proje dizini aşağıdaki gibidir:

$CDselenyum-metin-seçimi/

Proje dizininde aşağıdaki gibi bir Python sanal ortamı oluşturun:

$sanalenv .venv

Sanal ortamı aşağıdaki gibi etkinleştirin:

$kaynak.venv/NS/etkinleştirmek

Selenium Python kitaplığını PIP3 kullanarak aşağıdaki gibi kurun:

$ pip3 selenyum yükleyin

Gerekli tüm web sürücüsünü indirip yükleyin. sürücüler/ proje dizini. Web sürücüleri indirme ve yükleme işlemini makalemde anlattım. Python 3'te Selenyum'a Giriş .

Öğeleri Metinle Bulma:

Bu bölümde, Selenium Python kitaplığı ile metinle web sayfası öğelerini bulma ve seçme örnekleri göstereceğim.

Web sayfası öğelerini metne göre seçmenin, web sayfasından bağlantıların seçilmesinin en basit örneğiyle başlayacağım.

facebook.com'un giriş sayfasında bir bağlantımız var Unutulmuş hesap? Aşağıdaki ekran görüntüsünde görebileceğiniz gibi. Selenium ile bu linki seçelim.

Yeni bir Python betiği oluşturun ex01.py ve aşağıdaki kod satırlarını içine yazın.

itibarenselenyumiçe aktarmakweb sürücüsü
itibarenselenyum.web sürücüsü.yaygın.anahtarlar içe aktarmakAnahtarlar
itibarenselenyum.web sürücüsü.yaygın.tarafından içe aktarmakTarafından
itibaren zaman içe aktarmakuyku
tarayıcı=web sürücüsü.Krom(yürütülebilir_yol='./drivers/chromedriver')
tarayıcı.elde etmek('https://www.facebook.com/')
unuttumHesapBağlantısı=tarayıcı.find_element(Tarafından.XPATH, '
//*[text()='Hesabınızı mı unuttunuz?']'
)
Hesap Bağlantısını unuttum.send_keys(Anahtarlar.GİRMEK)

İşiniz bittiğinde, kaydedin ex01.py Python komut dosyası.

Satır 1-4, gerekli tüm bileşenleri Python programına aktarır.

6. satır bir Chrome oluşturur tarayıcı kullanarak nesne krom sürücü gelen ikili sürücüler/ proje dizini.

8. satır, tarayıcıya facebook.com web sitesini yüklemesini söyler.

Satır 10, metni içeren bağlantıyı bulur Unutulmuş hesap? XPath seçiciyi kullanma. Bunun için XPath seçiciyi kullandım //*[text()='Unutulmuş hesap?'] .

XPath seçici şununla başlar: //, bu, öğenin sayfada herhangi bir yerde olabileceği anlamına gelir. NS * sembolü Selenium'a herhangi bir etiketi seçmesini söyler ( ile veya P veya açıklık, vb.) köşeli parantez içindeki koşulla eşleşen [] . Burada koşul, öğe metninin şuna eşit olmasıdır: Unutulmuş hesap?

NS Metin() Bir öğenin metnini almak için XPath işlevi kullanılır.

Örneğin, Metin() İadeler Selam Dünya aşağıdaki HTML öğesini seçerse.

< ile href='http://dummysite.com'>Selam Dünya</ ile >

11. satır şunları gönderir: için tuşa basın Unutulmuş hesap? Bağlantı.

Python betiğini çalıştırın ex01.py aşağıdaki komutla:

$ piton ex01.p

Gördüğünüz gibi, web tarayıcısı bulur, seçer ve üzerindeki anahtar Unutulmuş hesap? Bağlantı.

NS Unutulmuş hesap? Bağlantı, tarayıcıyı aşağıdaki sayfaya götürür.

Aynı şekilde, istediğiniz öznitelik değerine sahip öğeleri kolayca arayabilirsiniz.

Burada, Giriş yapmak düğme bir giriş olan eleman değer bağlanmak Giriş yapmak . Bu öğeyi metinle nasıl seçeceğimizi görelim.

Yeni bir Python betiği oluşturun ex02.py ve aşağıdaki kod satırlarını içine yazın.

itibarenselenyumiçe aktarmakweb sürücüsü
itibarenselenyum.web sürücüsü.yaygın.anahtarlar içe aktarmakAnahtarlar
itibarenselenyum.web sürücüsü.yaygın.tarafından içe aktarmakTarafından
itibaren zaman içe aktarmakuyku
tarayıcı=web sürücüsü.Krom(yürütülebilir_yol='./drivers/chromedriver')
tarayıcı.elde etmek('https://www.facebook.com/')
uyku(5)
e-postaGirdi=tarayıcı.find_element(Tarafından.XPATH, '//input[@id='email']')
şifreGirdi=tarayıcı.find_element(Tarafından.XPATH, '//input[@id='geçti']')
oturum açma düğmesi=tarayıcı.find_element(Tarafından.XPATH, '//*[@value='Giriş Yap']')
e-postaGirdi.send_keys(' [e-posta korumalı]')
uyku(5)
şifreGirdi.send_keys('gizli geçiş')
uyku(5)
oturum açma düğmesi.send_keys(Anahtarlar.GİRMEK)

İşiniz bittiğinde, kaydedin ex02.py Python komut dosyası.

Satır 1-4, gerekli tüm bileşenleri içe aktarır.

6. satır bir Chrome oluşturur tarayıcı kullanarak nesne krom sürücü gelen ikili sürücüler/ proje dizini.

8. satır, tarayıcıya facebook.com web sitesini yüklemesini söyler.

Komut dosyasını çalıştırdığınızda her şey çok hızlı olur. Yani, kullandım uyku() birçok kez işlev ex02.py tarayıcı komutlarını geciktirmek için. Bu şekilde, her şeyin nasıl çalıştığını gözlemleyebilirsiniz.

Satır 11, e-posta giriş metin kutusunu bulur ve öğenin referansını e-postaGirdi değişken.

Satır 12, e-posta giriş metin kutusunu bulur ve öğenin referansını e-postaGirdi değişken.

Satır 13, özniteliğe sahip girdi öğesini bulur değer ile ilgili Giriş yapmak XPath seçiciyi kullanarak. Bunun için XPath seçiciyi kullandım //*[@value='Giriş Yap'] .

XPath seçici şununla başlar: // . Bu, öğenin sayfada herhangi bir yerde olabileceği anlamına gelir. NS * sembolü Selenium'a herhangi bir etiketi seçmesini söyler ( giriş veya P veya açıklık, vb.) köşeli parantez içindeki koşulla eşleşen [] . Burada koşul, element özelliğidir. değer eşittir Giriş yapmak .

15. satır girişi gönderir[e-posta korumalı]e-posta giriş metin kutusuna gönderir ve 16. satır sonraki işlemi geciktirir.

Hat 18, şifre giriş metin kutusuna giriş gizli geçişini gönderir ve hat 19 bir sonraki işlemi geciktirir.

21. satır şunları gönderir: giriş düğmesine basın.

Çalıştır ex02.py Aşağıdaki komutla Python betiği:

$ python3 ex02.p

Gördüğünüz gibi, e-posta ve şifre metin kutuları sahte değerlerimizle doldurulur ve Giriş yapmak düğmesine basılır.

Ardından sayfa aşağıdaki sayfaya gider.

Öğeleri Kısmi Metinle Bulma:

Önceki bölümde, belirli metne göre öğeleri nasıl bulacağınızı gösterdim. Bu bölümde, kısmi metin kullanarak web sayfalarındaki öğeleri nasıl bulacağınızı göstereceğim.

Örnekte, ex01.py , metni içeren bağlantı öğesini aradım Unutulmuş hesap? . Aynı bağlantı öğesini aşağıdaki gibi kısmi metin kullanarak arayabilirsiniz. unutulan hesap . Bunu yapmak için, içerir() 10. satırda gösterildiği gibi XPath işlevi ex03.py . Kodların geri kalanı aşağıdakilerle aynıdır. ex01.py . Sonuçlar aynı olacak.

10. satırda ex03.py , kullanılan seçim koşulu içerir(kaynak, metin) XPath işlevi. Bu fonksiyon 2 argüman alır, kaynak, ve Metin .

NS içerir() fonksiyon olup olmadığını kontrol eder. Metin ikinci argümanda verilen, kısmen kaynak ilk argümandaki değer.

Kaynak, öğenin metni olabilir ( Metin() ) veya öğenin öznitelik değeri ( @attr_name ).

İçinde ex03.py , öğenin metni kontrol edilir.

Kısmi metin kullanarak web sayfasındaki öğeleri bulmak için başka bir yararlı XPath işlevidir. başlar-ile(kaynak, metin) . Bu işlev ile aynı argümanlara sahiptir. içerir() işlev görür ve aynı şekilde kullanılır. Tek fark, ile başlar() işlev, ikinci argümanın olup olmadığını kontrol eder. Metin ilk argümanın başlangıç ​​dizesidir kaynak .

örneği yeniden yazdım ex03.py metnin başladığı öğeyi aramak için unutulmuş, 10. satırda görebileceğiniz gibi ex04.py . Sonuç şundakiyle aynı ex02 ve ex03.py .

ben de yeniden yazdım ex02.py böylece giriş öğesini arar. değer nitelik ile başlar Kayıt, 13. satırda görebileceğiniz gibi ex05.py . Sonuç şundakiyle aynı ex02.py .

Çözüm:

Bu yazımda sizlere Selenium Python kütüphanesi ile web sayfalarından elementleri metin olarak bulmayı ve seçmeyi gösterdim. Artık, Selenium Python kitaplığı ile web sayfalarındaki öğeleri belirli metin veya kısmi metinle bulabilmeniz gerekir.