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?
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?
Yanıtlar:
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.
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
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 .
driver = webdriver.PhantomJS(r"C:\\phantomjs\phantomjs.exe")
headless
seçeneği var
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.
Linux'ta, test tarayıcınızı sanal bir ekranda çalıştırabilirsiniz. xvfb
Sanal 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.sh
Herhangi 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.
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.
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
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
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.
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.
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.
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.