আমি কীভাবে এক্সভিএফবিতে সেলেনিয়াম চালাব?


93

আমি ইসি 2 উদাহরণে আছি। সুতরাং কোনও জিইউআই নেই।

$pip install selenium
$sudo apt-get install firefox xvfb

তারপরে আমি এটি করি:

$Xvfb :1 -screen 0 1024x768x24 2>&1 >/dev/null &

$DISPLAY=:1 java -jar selenium-server-standalone-2.0b3.jar
05:08:31.227 INFO - Java: Sun Microsystems Inc. 19.0-b09
05:08:31.229 INFO - OS: Linux 2.6.32-305-ec2 i386
05:08:31.233 INFO - v2.0 [b3], with Core v2.0 [b3]
05:08:32.121 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
05:08:32.122 INFO - Version Jetty/5.1.x
05:08:32.123 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
05:08:32.124 INFO - Started HttpContext[/selenium-server,/selenium-server]
05:08:32.124 INFO - Started HttpContext[/,/]
05:08:32.291 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@1186fab
05:08:32.292 INFO - Started HttpContext[/wd,/wd]
05:08:32.295 INFO - Started SocketListener on 0.0.0.0:4444
05:08:32.295 INFO - Started org.openqa.jetty.jetty.Server@1ffb8dc

দুর্দান্ত, এখন সবকিছু ঠিকঠাক কাজ করা উচিত?

আমি যখন আমার কোডটি চালাই:

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys

browser = webdriver.Firefox() 
browser.get("http://www.yahoo.com") 

বুঝতে পেরেছি:

Error: cannot open display: :0

4
আপনি যদি এক্স চালিত কোনও সিস্টেমে থাকেন তবে প্রদর্শন: 0 পাওয়া উচিত। এক্সভিএফবি: 0 চালানোর চেষ্টা করুন - এছাড়াও @ema দ্বারা উল্লিখিত xvfb- রান দেখুন
ফিজিয়াআরন

4
: ভবিষ্যতের অনুগামীদের জন্য, আমি উবুন্টু সার্ভার জন্য আমার সমাধান বর্ণিত namekdev.net/2016/08/...
Namek

উত্তর:


35

একটি টার্মিনাল খুলুন এবং এই কমান্ডটি চালান xhost +। আপনি যখনই নিজের মেশিনটি পুনরায় চালু করবেন তখন এই আদেশগুলি চালানো দরকার। যদি সবকিছু ঠিকঠাক কাজ করে তবে আপনি এটি স্টার্টআপ কমান্ডগুলিতে যুক্ত করতে পারেন

আপনার / ইত্যাদি / পরিবেশের ফাইলটিতে একটি লাইন রয়েছে তা নিশ্চিত করুন

export DISPLAY=:0.0 

এবং তারপরে, আপনার সমস্যাটি সমাধান হয়েছে কিনা তা পরীক্ষা করে দেখুন।

এটি ব্যবহার করার আগে দয়া করে নীচে সারদাথ্রিয়ান থেকে মন্তব্যটি নোট করুন।


আপনাকে কেবল কমান্ড লাইন থেকে java -jar selenium-server-standalone-2.0b3.jar কার্যকর করতে হবে এবং তারপরে আপনার পরীক্ষা চালানো দরকার
এজে

আমি ইসি 2 উদাহরণে আছি, সুতরাং কোনও জিইউআই নেই। xhost: ডিসপ্লে খুলতে অক্ষম ": 0.0"
টিমেক্স

@owa আপনারও ক্লায়েন্ট এনভায়রনমেন্টে ডিসপ্লের পরিবেশের পরিবর্তনশীল দরকার।
কীথ

10
xhost +নিরাপত্তাহীন দয়া করে এটি ব্যবহার করবেন না। যদি আপনাকে এক্সহোস্ট ব্যবহার করতে হয়, আপনি যে নির্দিষ্ট মেশিনটি চান তা যুক্ত করুন এবং + (যা যা কিছু হোক না কেন)।
সারদাথ্রিয়ন - এসই এর বিরুদ্ধে

171

হেডলেস ওয়েবড্রাইভার পরীক্ষা চালানোর জন্য আপনি পাইভির্চুয়ালডিস্প্লে ( এক্সভিএফবির একটি পাইথন র‍্যাপার) ব্যবহার করতে পারেন ।

#!/usr/bin/env python

from pyvirtualdisplay import Display
from selenium import webdriver

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

# now Firefox will run in a virtual display. 
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()

display.stop()

অধিক তথ্য


আপনি xvfbwrapper ব্যবহার করতে পারেন , এটি একটি অনুরূপ মডিউল (তবে কোনও বাহ্যিক নির্ভরতা নেই):

from xvfbwrapper import Xvfb

vdisplay = Xvfb()
vdisplay.start()

# launch stuff inside virtual display here

vdisplay.stop()

বা আরও ভাল, এটি একটি প্রসঙ্গে পরিচালক হিসাবে ব্যবহার করুন:

from xvfbwrapper import Xvfb

with Xvfb() as xvfb:
    # launch stuff inside virtual display here.
    # It starts/stops in this code block.

4
@ আন্ড্রেই ওএসএক্স এক্স 11
-কে

: এই উত্তর ব্যবহৃত এটা OS X এর উপর ভবঘুরে + + PyCharm + + জ্যাঙ্গো সঙ্গে কাজ করতে stackoverflow.com/q/29343109
chachan

আমি উপরের পাইওয়ার্চুয়ালডিজপাল কোডটি প্রয়োগ করি যখন আমি "ব্রাউজার থেকে বেরিয়ে এসেছি" পেয়েছি
gtownrower

45

Xvfb- চালানো সম্ভবত সবচেয়ে সহজ উপায়:

DISPLAY=:1 xvfb-run java -jar selenium-server-standalone-2.0b3.jar

xvfb- রান আপনার জন্য পুরো এক্স কর্তৃপক্ষের নাচ করে, চেষ্টা করে দেখুন!


এটিই আমি খুঁজছিলাম। এক্সভিএফবি নিজে থেকে শুরু করা আমার পক্ষে কাজ করে বলে মনে হচ্ছে না, তবে এক্সভিএফবি-রান ব্যবহার করে কৌশলটি সফল হয়েছে। ধন্যবাদ
রেইনা আবলোফিয়া

9
DISPLAY=:1অপ্রয়োজনীয়; xvfb-run :99নির্দিষ্ট কমান্ডটি (আপনার ক্ষেত্রে, java -jar selenium-server...) শুরু করার আগে DISPLAY এনভায়রনমেন্টের পরিবর্তনশীলকে অন্য কোনও কিছুতে (সাধারণত ) সেট করে
অ্যালেক্স ডুপুয়

20

এই সেটআপটি আমি ব্যবহার করি:

পরীক্ষা চালানোর আগে, কার্যকর করুন:

এক্সপোর্ট DISPLAY =: 99
/etc/init.d/xvfb শুরু করুন

এবং পরীক্ষার পরে:

/etc/init.d/xvfb স্টপ

init.dআমি যে ফাইলটি ব্যবহার করি তা দেখতে এরকম দেখাচ্ছে:

#! / বিন / বাশ

এক্সভিএফবি = / ইউএসআর / বিন / এক্সভিএফবি
XVFBARGS = "$ DISPLAY -acccreen 0 1024x768x16"
পিআইডিএফআইএল = $ OME হোম} / এক্সভিএফবি _ $ {প্রদর্শন: 1} .পিড
কেস "$ 1" ইন
  শুরু)
    প্রতিধ্বনি -n "ভার্চুয়াল এক্স ফ্রেম বাফার শুরু হচ্ছে: এক্সভিএফবি"
    / এসবিন / স্টার্ট-স্টপ-ডেমন - স্টার্ট - কিউইট - পিডফিল
    প্রতিধ্বনি "।"
    ;;
  থামান)
    প্রতিধ্বনি -n "ভার্চুয়াল এক্স ফ্রেম বাফার থামানো: এক্সভিএফবি"
    / এসবিন / স্টার্ট-স্টপ-ডেমন - স্টপ - কিউইট - পিডফিল
    প্রতিধ্বনি "।"
    ;;
  আবার শুরু)
    $ 0 স্টপ
    $ 0 শুরু
    ;;
  *)
  প্রতিধ্বনি "ব্যবহার: /etc/init.d/xvfb {শুরু | স্টপ | পুনরায় আরম্ভ করুন}"
  প্রস্থান 1
এসাক
প্রস্থান 0

আমি ঠিক এটি করেছি এবং তারপরে আমার স্ক্রিপ্টটি চালিয়েছি। তবে, আমি এটি এখনও পেয়েছি: ত্রুটি: প্রদর্শনটি খুলতে পারে না:: 0। এছাড়াও, আমার কি সেলেনিয়াম জাভা সার্ভার চালানো দরকার? দেখে মনে হচ্ছে এটি চালাচ্ছি বা না করি তাতে কিছু আসে যায় না ...
টিমেক্স 21

4
হ্যাঁ, আপনি যদি ওয়েবড্রাইভার ব্যবহার করেন তবে আপনার সেলেনিয়াম জাভা সার্ভারের দরকার নেই।
কোরি গোল্ডবার্গ

3

আপনি যদি মাভেন ব্যবহার করেন, আপনি পরীক্ষার আগে এক্সভিএফবি শুরু করতে এক্সভিএফবি-ম্যাভেন-প্লাগইন ব্যবহার করতে পারেন , DISPLAYপরিবেশগত পরিবর্তনশীল ব্যবহার করে এগুলি চালনা করতে পারেন এবং সর্বোপরি xvfb বন্ধ করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.