Ubuntuya selenium modülünü nasıl kurabilirim?

S.a. arkadaşlar,

Şimdi ubuntu çalışmaya başladım. Python projelerini sunucuda çalıştıracağım. Virtualenv ile proje oluşturuyorum. Projeyi aktifliyorum. pip3 ile selenium indiriyorum. Daha sonra geckodriveri indirip unzip yapıp kodlardan geckodriver yolunu belirtiyorum aşağıdaki şekilde.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By




browser = webdriver.Firefox(executable_path="/home/alper/Desktop/proje/geckodriver")
browser.maximize_window()
browser.get('https://www.google.com.tr')

jj = browser.page_source

print(jj)

Fakat seleniumu bir türlü çalıştıramadım. Ayrıca işlemleri hep terminalde yapıyorum. Ayrıca firefox driver kullanmak zorundayım. Nerde hata yapıyorum bir türlü çözemedim arkadaşlar. Yardımcı olursanız çok menmun olurum. Hoşcakalın

Hata kodum:

(proje) alper@alper-VirtualBox:~/Desktop/proje$ python3 bot1.py
Traceback (most recent call last):
  File "bot1.py", line 10, in <module>
    browser = webdriver.Firefox()
  File "/home/alper/Desktop/proje/lib/python3.7/site-packages/selenium/webdriver                             /firefox/webdriver.py", line 174, in __init__
    keep_alive=True)
  File "/home/alper/Desktop/proje/lib/python3.7/site-packages/selenium/webdriver                             /remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/home/alper/Desktop/proje/lib/python3.7/site-packages/selenium/webdriver                             /remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/home/alper/Desktop/proje/lib/python3.7/site-packages/selenium/webdriver                             /remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/alper/Desktop/proje/lib/python3.7/site-packages/selenium/webdriver                             /remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a                              matching set of capabilities


Hatayi veren kod yukariya yazdigin kod degil.

Şöyle bir soru buldum, belki işinize yarar:

Nası yanlış hocam hata kodu aynen buradaki gibi.

Verdiğin linkdeki çözüm olan cevap windows işletim sistemine göre verilmiş. Ben zaten windows ta çalıştırabiliyorum selenium. Fakat ubuntuda çalıştıramadım.

Hocam sanırım virtualenv ile ilgili bir problem. Birde makinenin kendisine kurup deneyeceğim.

Olabilir belki yanılıyorumdur, yorumlayıcının davranışı da farklı olabilir ama kodunuzda browser = webdriver.Firefox() diye bir yer göremedim. (Büyük ihtimalle yorumlayıcı veya IDE’nin davranışı ile alakalı, eğer hata mesajı eksiksiz ise bu yorumumu görmezden gelebilirsiniz.)

Evet haklısınız hocam. Bu hata kodu executable_path yerleştirmeden önceydi. Fakat aşağıda yine aynı hatayı alıyorum :slight_smile:

İlginiz için teşekkür ederim.

Traceback (most recent call last):
  File "bot1.py", line 10, in <module>
    browser = webdriver.Firefox(executable_path="/home/alper/Desktop/proje/geckodriver")
  File "/home/alper/Desktop/proje/lib/python3.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
    keep_alive=True)
  File "/home/alper/Desktop/proje/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/home/alper/Desktop/proje/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/home/alper/Desktop/proje/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/alper/Desktop/proje/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities

Aslında pek bir yardımım dokunmadı ama sadece ufak bir ayrıntıyı düzelttim :slightly_smiling_face: Kullandığınız Firefox tarayıcısının versiyonunu söyleyebilir misiniz?

snap info firefox

yapınca aşağıda yazıyor herhalde. 72 herhalde.

snap-id: 3wdHCAVyZEmYsCMFDE9qt92UV8rC8Wdk
channels:
  stable:        72.0.1-1    2020-01-08 (303) 208MB -
  candidate:     72.0.1-1    2020-01-08 (303) 208MB -
  beta:          73.0b2-1    2020-01-08 (302) 208MB -
  edge:          ↑
  esr/stable:    68.4.1esr-1 2020-01-08 (304) 220MB -
  esr/candidate: ↑
  esr/beta:      ↑
  esr/edge:      ↑

Geckodriver ve python versiyonu kaç?

Buyurun hocam

root@alper-VirtualBox:/home/alper# python3 --version
Python 3.7.5
root@alper-VirtualBox:/home/alper# geckodriver --version
geckodriver 0.24.0 ( 2019-01-28)

The source code of this program is available from
testing/geckodriver in https://hg.mozilla.org/mozilla-central.

This program is subject to the terms of the Mozilla Public License 2.0.
You can obtain a copy of the license at https://mozilla.org/MPL/2.0/.

Versiyonlar uygun, artık diğer arkadaşlar yardım eder :slightly_smiling_face:

Peki hocam çok teşekkür ederim.

Bir de selenium’un versiyonunun 3.11’den büyük veya eşit olduğuna emin olun ne olur ne olmaz.

Oldu hocam. Aynen aşağıdakileri uyguladım. Burayada yazalımda hem elimizin altında olsun. Hemde zorlanan arkadaşlar olursa benim gibi faydamız olsun.

sudo apt update
sudo apt install firefox python3-pip xvfb x11-utils --yes
sudo -H pip3 install bpython selenium

export DISPLAY=:2
Xvfb $DISPLAY -ac &

export GECKO_DRIVER_VERSION='v0.24.0'
wget https://github.com/mozilla/geckodriver/releases/download/$GECKO_DRIVER_VERSION/geckodriver-$GECKO_DRIVER_VERSION-linux64.tar.gz
tar -xvzf geckodriver-$GECKO_DRIVER_VERSION-linux64.tar.gz
rm geckodriver-$GECKO_DRIVER_VERSION-linux64.tar.gz
chmod +x geckodriver
sudo cp geckodriver /usr/local/bin/

cat <<EOF > script.py
#!/usr/bin/env python3
from selenium.webdriver import Firefox, FirefoxOptions, FirefoxProfile

ff_options = FirefoxOptions()
ff_options.headless = True

ff = Firefox(options=ff_options)
ff.quit()
EOF
chmod +x script.py

Kaynak:https://gist.github.com/pcgeek86/a1fd9d26f8ad46b51adf9513f67b95f2

cat < script.py bu kısımdan sonrasını yazmasınızda olur. Ben kendi kodumuda denedim hepsi çalıştı açıkcası.

2 Beğeni

Tekrar bakana kadar cozulmus, sevindim :slight_smile:

Ubuntu standart repository’sinde (universe) firefox-geckodriver diye bir paket var bu arada, onu kurmak yetti.

virtualenv ac, pip ile selenium yukle, (hazir firefox ve firefox-geckodriver'in kuruldugundan emin ol,) kodu calistir --> otomatize firefox’ta google acildi.

firefox’u snap’ten kullandiginda ne degisir bilmiyorum; geckodriver snap’i var midir, sistem geckodriver’i snap firefox’uyla calisir mi, vs…
Ama gerci firefox versiyonunu bilmemen snap’i ozellikle 72 versiyonu icin kullanmadigini gosteriyor. snap’i kullanmanin ozel bir sebebi var mi?

Sistemde 71 var bu arada. (Dundu o gerci, bugun 72 cikmis olabilir)

1 Beğeni

Teşekkürler hocam,

Snap kullanmamın hiçbir amaçı yok. Firefox versiyon çektiğimde sonuç alamadım. Bende snap info ile versiyon aldım. Dediğiniz paketi kurup deneyeceğim. Tekrardan teşekkürler.

Hocam sizin çözüm önerinizi denedim. Ve oldu. Sizin öneriniz çok daha kolay çok daha basit oldu açıkcası. Ayrıca selenium ptyhon da çalıştırırken

options = Options()
    options.headless = True
    browser = webdriver.Firefox(options=options)

headless yani tarayıcıyı açmadan kullanmak gerekiyormuş. Onuda buraya not edelim. Ayrıca ubuntuya bayıldım, çok geç tanıştık fakat beklediğime değdi doğrusu :slight_smile: Biz windows da resmen amelelik yapıyormuşuz dedirdi resmen :slight_smile: Windows mysql server kurmak için 2gb yakın dosya indir, yok onun patch ayarla derken 45 dk sürüyor. Ubuntuda bu işlem herhalde 1dk bile sürmüyor :slight_smile: Tekrardan teşekkür ederim.

Ah, bu hep karsima gelecekteki bir problem olarak cikti ama hic bir zaman oraya gitmek zorunda kalmadim. Bu kadar kolay oldugunu bilmek sevindirdi!

E tabi, biz manyakligimizdan mi kullaniyoruz saniyodun Linux’u :smile: Kolay oldugu icin kullaniyoruz ^^

Cok sevindim :slight_smile:

1 Beğeni