Tarayıcıyı Selenium RC'de gizlemek mümkün mü?


92

Bazı tarayıcı işlemlerini otomatikleştirmek için Selenium RC kullanıyorum ancak tarayıcının görünmez olmasını istiyorum. Mümkün mü? Nasıl? Selenium Grid ne olacak? Selenium RC penceresini de gizleyebilir miyim?


Kabul edilebilir olmayabilir, ancak tıpkı pencereyi (-10000, -10000) konumuna yerleştirmek gibi tarayıcıyı ekrandan kaldırıp (normal Windows UI otomasyonu kullanarak mı?)
BrainSlugs83

2
Bu soru artık eski olduğu için, sizi bu sayfanın altındaki uygun güncel bir yanıta yönlendirmeme izin verin .
Stéphane Bruckert

Yanıtlar:


87

Birkaç seçenek var:

  • Selenium Grid'i, tarayıcının tamamen farklı bir makinede (veya sanal makinede) açılması için kullanabilirsiniz, böylece tarayıcıyı görmek isterseniz VNC veya Uzak Masaüstü Bağlantısı aracılığıyla bağlanabilirsiniz. Ayrıca, başka bir seçenek: Uzak sunucuda bir Jenkins ön plan işlemi çalıştırırsanız, test projenizi masaüstünde yürütebilir.

  • Selenium 'başsız'ı Linux'ta XVFB'de çalıştırabilirsiniz. Bunu yapmayı hiç denemedim ve gerçekten çabaya değer olduğundan şüphe etmedim. http://www.alittlemadness.com/2008/03/05/running-selenium-headless/

  • Selenium RC'yi bir Windows hizmetine sarabilirsiniz. http://support.microsoft.com/kb/137890 . Bunun dışında, Windows'un sonraki sürümlerindeki izin kısıtlamaları, Selenium'un yapmamıza izin veren Windows 2000 gibi masaüstüne erişmesini muhtemelen engelleyecektir.

  • Başka bir seçenek de 'gerçek' bir tarayıcı başlatmayan WebDriver HTMLUnitDriver gibi bir şey kullanmaktır. http://code.google.com/p/webdriver/ . Ayrıca PhantomJS seçeneğinin yanı sıra kullanabileceğiniz bir 'başsız Chrome' var.

  • Elbette, testlerinizi bulutta çalıştırabileceğiniz SauceLabs gibi bir hizmet kullanma seçeneği de var. Testleriniz tamamlandıktan sonra, çalışırken videosunu izleyebilirsiniz.


Hizmeti yüklemek için bir yarasa dosyası oluşturmayla ilgili talimatlar: brantleytec.blogspot.com/2012/11/…
Brantley Blanchard

58

Linux'ta, tarayıcıyı gizlemek için WebDriver'ı başsız (sanal) bir ekranda çalıştırabilirsiniz. Bu, Xvfb (X sanal çerçeve arabelleği) ile yapılabilir.

Xvfb'yi doğrudan Python kodundan kontrol edebilirsiniz xvfbwrapper: https://github.com/cgoldberg/xvfbwrapper

Başsız çalıştırma için Python kodu şöyle görünür:

from selenium import webdriver
from xvfbwrapper import Xvfb

display = Xvfb()
display.start()

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

print(driver.title)
driver.quit()

display.stop()

Debian / Ubuntu'ya bağımlılıkları yükleyin:

$ sudo apt-get install xvfb
$ pip install xvfbwrapper

Kod sanal bir tarayıcıda çalıştığında, tarayıcı etkileşim komut dosyası çalışırken bilgisayarımı normal şekilde kullanmaya devam edebilir miyim?
Mugen

Kaynaklar alınır, makineniz yavaşlar!
Tim Long

22

Tarayıcı penceresini kolayca gizlemeyi başardım.

Sadece PhantomJS'yi kurun . Ardından bu satırı değiştirin:

driver = webdriver.Firefox()

to:

driver = webdriver.PhantomJS()

Kodunuzun geri kalanının değiştirilmesi gerekmeyecek ve hiçbir tarayıcı açılmayacaktır. Hata ayıklama amacıyla, driver.save_screenshot('screen.png')kodunuzun farklı adımlarında kullanın .


5
Bunun çalışması için PhantomJs.exe'nin yolunu koymanız gerektiğini belirtmekte fayda var. örnekdriver = webdriver.PhantomJS(r"C:\\phantomjs\phantomjs.exe")
K DawG

1
Evet, ancak yalnızca Windows'ta.
Stéphane Bruckert

1
ortamınızın $ PATH ortam değişkeninde bulunabildiği sürece ikilinin konumunu belirtmenize gerek yoktur.
Corey Goldberg

PhantomJS artık geliştirilmiyor, ancak Chrome'un bir headlessseçeneği var
raffaem

13

Windows hizmeti olarak Selenium RC için +1.

Testlerin tamamen gizli çalışması için, pencerelerdeyseniz fazla çözümünüz olmadığını düşünüyorum.

LAN'ınızdaki bir bilgisayarı her zaman çevrimiçi olmaya ve bir selenyum RC sunucusu çalıştırmaya ayırmak için ne yapardım. Yani testlerinizi çalıştırmak için localhost yerine o bilgisayarın IP'sini kullanırsınız. Örneğin:

browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")

(sunucuyu çalıştıran bilgisayarın ipinin bu olduğu düşünüldüğünde).

Bu kurulumu yaptıktan sonra, testlerinizi bilgisayarınızda çalıştırırsınız, tarayıcılar ve RC sunucusu penceresi başka bir bilgisayardadır ve tamamlandığında sizinkine geri dönülür.


12

Linux'ta, test tarayıcınızı sanal bir ekranda çalıştırabilirsiniz. xvfbSanal bir X sunucusu oluşturmak için pakete ihtiyacınız olacak . Debian tabanlı dağıtımlarda çalıştırın

sudo apt-get install xvfb

ephemeral-x.shHerhangi bir komutu sanal ekranda çalıştırmak için uygun şekilde ayarlayacak güzel bir araç var. İndirin ve çalıştırılabilir hale getirin:

wget https://raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh
chmod +x ephemeral-x.sh

Ardından, Selenium sunucusunu başlatmak için kullanabilirsiniz:

./ephemeral-x.sh java -jar selenium-standalone.jar

Selenium tarafından oluşturulan tüm tarayıcı pencereleri artık sanal ekranı kullanacak ve sizin için görünmez olacaktır.


Bu komut dosyasının bir alıntı sorunu var. ./Ephemeral-x.sh foo '*' dersem, "Çalışıyor: foo" ve ardından dizininin içeriğini yazıyor.
Nick Retallack

4

Windows kullanıyorsanız, seçeneklerden biri testleri farklı bir kullanıcı hesabı altında çalıştırmaktır . Bu, tarayıcının ve java sunucusunun kendi hesabınız tarafından görülmeyeceği anlamına gelir.


3

Maven ile testlerimi Linux masaüstünde (Ubuntu) böyle çalıştırıyorum. Her zaman odaklanan firefox webdriver ile çalışamamaktan sıkıldım.

Xvfb kurdum

xvfb-run -a mvn temiz yükleme

Bu kadar


Bu genellikle xvfb'nin Selenium / WebDriver tarafından çalıştığından ve kullanıldığından emin olmanın en kolay yoludur.
Samuli Pahaoja

1

Pek çok durumda PhantomJS ihtiyaçlarınızı tam olarak karşılamayacaktır, Dave Hunt'ın cevabında bahsedilen başsız krom seçeneğini detaylandırmak isterim.

chrome 57 bu özelliği yeni başlattı. ChromeDriver aracılığıyla --headless bayrağını geçirerek kullanabilirsiniz, daha fazla bilgi için bu sorudaki tartışmaya bakın


0

Adlı bir PhantomJS ilgili projesi yok GhostDriver webdriver tel JSON protokolü kullanılarak Selenyum kılavuz içinde PhantomJS örneklerini çalıştırmak anlamına gelir. Bu soru şu anda 4 yaşında olmasına rağmen muhtemelen aradığınız şey budur.


0

MacOSX'te tarayıcı penceresini gizleyemedim, ancak en azından onu farklı bir ekrana nasıl taşıyacağımı buldum, böylece iş akışımı çok fazla kesintiye uğratmasın. Firefox testleri çalıştırırken, dock'taki simgesine kontrol tuşuna basarak tıklayın, Seçenekler'i seçin ve Ekran 2'ye Ata'yı seçin.


0
curl -k https://gist.githubusercontent.com/terrancesnyder/995250/raw/cdd1f52353bb614a5a016c2e8e77a2afb718f3c3/ephemeral-x.sh -o ~/ephemeral-x.sh
chmod +x ~/ephemeral-x.sh
~/ephemeral-x.sh TestsStarterCommand

Bu arada bu, e2e'yi çalıştıran herhangi bir geliştiricinin ihtiyaç duyduğu ve mantıksal olarak tarayıcıları ortaya çıkaracak bir özelliktir. Bir geliştirme ortamında, sürekli olarak ortaya çıkan ve testin başarısız olmasına neden olarak yanlışlıkla etkileşime girebileceğiniz pencereyle uğraşmak can sıkıcıdır.


0

Başsız Chrome'u kullanmak en iyi seçeneğiniz olacaktır veya onunla etkileşim kurmak için doğrudan siteye gönderi paylaşabilirsiniz, bu da diğer şeyler / işlemler için çok fazla işlem gücü tasarrufu sağlar. Bunu, cpu ağır unsurları kullanarak birden çok sitede ayakkabı arayan web otomasyon botlarını test ederken kullanıyorum, ne kadar çok güç tasarrufu yaparsanız ve programınız ne kadar basitse, muhc ile aynı anda birden fazla işlemi çalıştırmak daha kolay ve daha hızlı ve güvenilirlik.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.