জিইআইআই ছাড়া সেলেনিয়াম (ফায়ারফক্স) ওয়েব ড্রাইভার চালানো কি সম্ভব?


113

আমরা আমাদের প্রোডাকশন সার্ভারটি উবুন্টু- ডেস্কটপ 10.04 থেকে উবুন্টু- সার্ভারে 12.04- তে উন্নীত করার বিষয়ে বিবেচনা করছি ।

আমাদের বর্তমান ডেস্কটপ ওএস যেমন সেলেনিয়াম ওয়েব ড্রাইভারে চলছে বিভিন্ন পরিষেবা। আমার প্রশ্ন হচ্ছে সেলেনিয়াম ওয়েব ড্রাইভারটি কি ক্লাই-ভিত্তিক সিস্টেম থেকে চালানো যেতে পারে?

আমার তাত্ক্ষণিকভাবে চিন্তাভাবনাটি হ'ল এটি পারে না, কারণ এটি ফায়ারফক্সের উপর নির্ভর করে তবে আমি চাই কেউ আমাকে ভুল প্রমাণ করুক!


উত্তর:


102

আপনি যা খুঁজছেন তা একটি

হ্যাঁ, ফায়ারফক্সে নির্বিঘ্নে সেলেনিয়াম চালানো সম্ভব। এখানে আপনি অনুসরণ করতে পারেন একটি পোস্ট

Xvfb সেট আপ করার জন্য এখানে সংক্ষিপ্ত পদক্ষেপ রয়েছে

#install Xvfb
sudo apt-get install xvfb

#set display number to :99
Xvfb :99 -ac &
export DISPLAY=:99    

#you are now having an X display by Xvfb

5
এটি স্ক্রিনশটগুলিতে কাজ করে এবং সমর্থন করে। আমি এটি ব্যবহার করি এটি গুগল ক্রোমের সাথেও কাজ করে।
আইজাক 14

আমার মনে হয় না এটি আর কাজ করে (কমপক্ষে সহজেই হয় না, কারণ এটির জন্য ক্রোমের মতো নতুন গ্যাকোড্রাইভার প্রয়োজন)
আর্কিমিডিস ট্রাজানো

1
@ अर्চিমেডিজ ট্রাজানো এটি এখনও কাজ করে। দিকনির্দেশগুলি ব্যবহার করে ভার্চুয়াল ডিসপ্লে তৈরির জন্য Xvfb, সেলেনিয়াম ইনস্টল এবং কনফিগার করার জন্য নয় (যার geckodriverপথে চলার প্রয়োজন রয়েছে)।
এক্সপ্রেস

2
আমি পাইথনের মধ্যে থেকে এটি করতে পছন্দ করি যা আপনি এর সাথে করতে পারেন subprocess.Popen('Xvfb...')বা os.system('Xvfb...')করতে পারেন তবে ওয়েবড্রাইভার আমদানির আগে তা নিশ্চিত করে নিন।
শব্দসুখে

4
সেই লিঙ্কটি এখন ভাঙা
ওল্ডবয়

22

ক্রোমের এখন একটি মাথা বিহীন মোড রয়েছে:

op = webdriver.ChromeOptions()
op.add_argument('headless')
driver = webdriver.Chrome(options=op)

4
ফ্যান্টমজেএস বর্তমানে সক্রিয় বিকাশে নেই। গিট সংগ্রহস্থল সংরক্ষণাগারভুক্ত।
ওয়াজসিচ জাকুবাস

1
সেলেনিয়াম নীচের বার্তাটি দিয়ে "ফ্যান্টমজেএসকে সমর্থন বন্ধ করে দিয়েছে" ইউজারওয়্যারিং: ফ্যান্টমজেএসের জন্য সেলেনিয়াম সমর্থন অবমূল্যায়ন করা হয়েছে, দয়া করে ক্রোম বা ফায়ারফক্সের শিরোনামহীন সংস্করণগুলি ব্যবহার করুন "
জের্গ

11

হ্যাঁ. ওয়েবড্রাইভার শুরু HTMLUnitDriverকরার FirefoxDriverসময় আপনি তার পরিবর্তে ব্যবহার করতে পারেন । এটি হেডলেস ব্রাউজার সেটআপ। বিশদ এখানে পাওয়া যাবে


1
এটি কি সেভ_স্ক্রিনশট () এর মতো ফাংশন সমর্থন করে? coreygoldberg.blogspot.co.uk/2011/06/…
ননশাটার

চেষ্টা করা হয়নি, তবে এটি সম্ভবত সম্ভব কারণ আপনি কার্যকরভাবে এখনও একটি ইউআই তৈরি করছেন, তবে এটি একটি 'ভার্চুয়াল' উইন্ডোতে দেখিয়েছেন।
গ্রাহামিন

2
HTMLUnitDriver ক্যাপচার স্ক্রিনশট সমর্থন করবে না কারণ বিষয়বস্তু মোটেও রেন্ডার করা হয়নি (ইস্যু 1361)। আমি বিকল্প হিসাবে ভাবতে পারি হ'ল এইচটিএমএলসোর্স ব্যবহার করা এবং স্ক্রিনশটের চেয়ে HTML পৃষ্ঠাটি দেখানো।
এজে

10

আপনি যদি শিরোনামহীন ব্রাউজার সমর্থন চান তবে তারপরেও এমন একটি উপায় রয়েছে যা আপনি গ্রহণ করতে পারেন।

https://github.com/detro/ghostdriver

এটি সেলেনিয়াম সম্মেলনের সময় ঘোষণা করা হয়েছিল এবং এটি এখনও চলছে। এটি ব্রাউজার হিসাবে ফ্যান্টমজেএস ব্যবহার করে এবং এইচটিএমএল ইউনাইটড্রাইভারের চেয়ে অনেক ভাল, এখনও কোনও স্ক্রিনশট নেই, তবে এটি এখনও সক্রিয় বিকাশে রয়েছে।


4

Likeচ্ছিক pyvirtualdisplayএই জাতীয় ব্যবহার :

from pyvirtualdisplay import Display

display = Display(visible=0, size=[800, 600])
display.start()

#do selenium job here

display.close()

একটি সংক্ষিপ্ত সংস্করণ হ'ল:

with Display() as display:
    # selenium job here

এটি সাধারণত একটি পাইথন এনপ্যাপুলেট xvfbএবং কোনওরকম আরও দৃ conv়প্রত্যয়ী।

উপায় দ্বারা, যদিও PhantomJSএকটি হেডলেস ব্রাউজার এবং কোন জানালা খোলা থাকবে যদি আপনি এটি ব্যবহার করেন, মনে হচ্ছে যে PhantomJSএখনও প্রয়োজন কাজ করার জন্য একটি GUI পরিবেশ।

আমি হেডলেস মোডের PhantomJS()পরিবর্তে Firefox()(পুটি-সংযুক্ত কনসোল) ব্যবহার করার সময় ত্রুটি কোড -6 পেয়েছি । তবে ডেস্কটপ পরিবেশে সবকিছু ঠিক আছে।


3

আপডেট: হেডলেস ফায়ারফক্স আর চালানোর জন্য আপনার XVFB এর দরকার নেই। লিনাক্সে ফায়ারফক্স ভি 55 + এবং উইন্ডোজ / ম্যাকের ফায়ারফক্স v56 + এখন হেডলেস এক্সিকিউশন সমর্থন করে।

আমি এখানে কিছু কীভাবে ব্যবহারের ডকুমেন্টেশন যুক্ত করেছি:

https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java


1
মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
ভার্গব রাও

এটি আমার পক্ষে কাজ করে না। আমি নিশ্চিত নই, তবে আমি মনে করি এক্সভিএফবি এখনও প্রয়োজন।
ম্যাক্স ম্যালিশ

আমি বেশ কয়েক বছর ধরে ফায়ারফক্স এবং ক্রোমে হেডলেস ব্রাউজার ব্যবহার করছি। সেলেনিয়ামের জন্য ওয়েবড্রাইভার ইন্টারফেস এমনকি এখন সেটহিডলেস প্যারামিটার সমর্থন করে।
নিকোলাস ডিপিয়াজ্জা


1

সচেতন থাকুন যে এইচটিএমএলইনাইটড্রাইভার ওয়েবক্লিয়েন্টটি একক থ্রেডযুক্ত এবং ঘোস্টড্রাইভার কেবল ওয়েবড্রাইভার হওয়ার জন্য 40% কার্যকারিতা রয়েছে।

তবুও, ঘোস্টড্রাইভার পরীক্ষার জন্য সঠিকভাবে চালিত হয় এবং এটি ওয়েবড্রাইভার হাবের সাথে সংযোগ করতে আমার সমস্যা হয়।


এটি কি এমন কোনও নতুন তথ্য সরবরাহ করে যা অন্যান্য উত্তরগুলি দেয় না?
অস্টিন হেনলি

0

হ্যাঁ, আপনি কোনও ব্রাউজার ছাড়াই পরীক্ষা স্ক্রিপ্টগুলি চালাতে পারেন, তবে আপনার এগুলি হেডলেস মোডে চালানো উচিত।


0

সম্ভবত আপনার উইন্ডো-আকারের মাত্রা নির্ধারণ করতে হবে। ঠিক যেমন:

options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1920x1080');

browser = webdriver.Chrome(options=options,executable_path = './chromedriver')

এছাড়াও যদি কাজ না করে থাকে তবে উইন্ডো-আকারের মাত্রা বাড়ানোর চেষ্টা করুন।


0

ধারকযুক্ত ফায়ারফক্স ইনস্টল করুন এবং চালান:

docker pull selenium/standalone-firefox
docker run --rm -d -p 4444:4444 --shm-size=2g selenium/standalone-firefox

ব্যবহার করে সংযুক্ত করুন webdriver.Remote:

driver = webdriver.Remote('http://localhost:4444/wd/hub', DesiredCapabilities.FIREFOX)
driver.set_window_size(1280, 1024)
driver.get('https://www.google.com')
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.