Чи можна приховати браузер в Selenium RC?


92

Я використовую Selenium RC для автоматизації деяких операцій браузера, але хочу, щоб браузер був невидимим. Чи можливо це? Як? Що можна сказати про селенову сітку? Чи можу я також приховати вікно Selenium RC?


Можливо, це не прийнятно, але як ви не могли просто відсунути браузер за межі екрана (використовуючи звичайну автоматизацію інтерфейсу Windows?), Наприклад, розмістити вікно на (-10000, -10000)?
BrainSlugs83,

2
Оскільки це питання вже застаріле, дозвольте мені перенаправити вас на правильну актуальну відповідь внизу цієї сторінки .
Стефан Брукерт,

Відповіді:


87

Є кілька варіантів:

  • Ви можете використовувати Selenium Grid, щоб браузер відкривався на зовсім іншій машині (або віртуальній машині), до якої потім можна підключитися через VNC або підключення до віддаленого робочого столу, якщо ви хочете побачити браузер. Також інший варіант: якщо ви запустите процес переднього плану Jenkins на цьому віддаленому сервері, він може виконати ваш тестовий проект на робочому столі.

  • Ви можете запустити "безголовий" селен на Linux у XVFB. Я ніколи не пробував це робити, і сумніваюся, що це справді варто зусиль. http://www.alittlemadness.com/2008/03/05/running-selenium-headless/

  • Ви можете обернути Selenium RC у службі Windows. http://support.microsoft.com/kb/137890 . За винятком того, що обмеження дозволів на пізніші версії Windows, ймовірно, заважатимуть Selenium отримувати доступ до робочого столу, як Windows 2000, яка використовувалась для того, щоб робити це.

  • Іншим варіантом було б використовувати щось на зразок WebDriver HTMLUnitDriver, який не запускає "справжній" браузер. http://code.google.com/p/webdriver/ . Також є опція PhantomJS, а також "безголовий Chrome", який ви можете використовувати.

  • Звичайно, є також можливість використовувати таку послугу, як SauceLabs, де ви можете отримати свої тести для запуску в хмарі. Після завершення тестування ви зможете переглянути відео, на якому вони працюють.


Ось інструкції щодо створення файлу bat для встановлення служби: brantleytec.blogspot.com/2012/11/…
Blanchard

58

У Linux ви можете запустити WebDriver на безголовому (віртуальному) дисплеї, щоб приховати браузер. Це можна зробити за допомогою Xvfb (X віртуальний буфер кадрів).

Ви можете керувати Xvfb безпосередньо з коду Python, використовуючи xvfbwrapper: https://github.com/cgoldberg/xvfbwrapper

Код Python для запуску без голови буде виглядати так:

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:

$ sudo apt-get install xvfb
$ pip install xvfbwrapper

Коли код працює у віртуальному браузері, то чи можу я продовжувати нормально користуватися своїм ПК під час запуску сценарію взаємодії з браузером?
Mugen

Забрані ресурси, ваша машина стане повільнішою!
Тім Лонг

22

Мені легко вдалося приховати вікно браузера.

Просто встановіть PhantomJS . Потім змініть цей рядок:

driver = webdriver.Firefox()

до:

driver = webdriver.PhantomJS()

Решту коду не потрібно буде міняти, і жоден браузер не відкриється. Для налагодження використовуйте driver.save_screenshot('screen.png')код на різних етапах.


5
Варто згадати, що вам потрібно прокласти шлях до PhantomJs.exe, щоб це працювало. прикладdriver = webdriver.PhantomJS(r"C:\\phantomjs\phantomjs.exe")
K DawG

1
Так, але тільки на Windows.
Стефан Брукерт

1
вам не потрібно вказувати розташування двійкового файлу, доки його можна знайти за змінною середовища $ PATH вашого середовища.
Кори Голдберг

13

+1 для Selenium RC як служби Windows.

Оскільки тести запускаються повністю прихованими, я думаю, у вас не так багато рішень, якщо ви працюєте у Windows.

Що б я зробив, щоб виділити комп’ютер у вашій локальній мережі постійно в мережі та мати запущений RC-сервер селену. Отже, ви використовуєте IP цього комп’ютера замість localhost для запуску тестів. Наприклад:

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

(враховуючи, що це ip комп'ютера, на якому запущений сервер).

Після такої настройки ви запускаєте свої тести на своєму комп’ютері, браузери та вікно RC-сервера знаходяться на іншому комп’ютері, і повернення до вашого після завершення.


12

У Linux ви можете запустити тестовий браузер на віртуальному дисплеї. Вам знадобиться xvfbпакет для створення віртуального X-сервера. На дистрибутивах на основі Debian просто запустіть

sudo apt-get install xvfb

Існує приємний інструмент, ephemeral-x.shякий зручно налаштує будь-яку команду для запуску на віртуальному дисплеї. Завантажте його та зробіть виконуваним:

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

Тоді ви можете просто використовувати його для запуску сервера Selenium:

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

Усі вікна браузера, створені Selenium, тепер використовуватимуть віртуальний дисплей і будуть невидимими для вас.


Цей сценарій має проблему цитування. Якщо я скажу ./ephemeral-x.sh foo '*', там буде написано "Running: foo", а потім вміст мого каталогу.
Нік Реталак

4

Якщо ви працюєте в ОС Windows, одним із варіантів є запуск тестів під іншим обліковим записом користувача . Це означає, що браузер та сервер Java не будуть видимими для вашого власного облікового запису.


3

Ось як я запускаю свої тести з maven на робочому столі Linux (Ubuntu). Мені набридло, що я не можу працювати з веб-драйвером firefox, завжди фокусуючись.

Я встановив xvfb

xvfb-run -чисте встановлення mvn

Це воно


Це часто найпростіший спосіб переконатися, що xvfb працює і використовується Selenium / WebDriver.
Самулі Пахаоя

1

У багатьох випадках PhantomJS не буде повністю відповідати вашим потребам, я хотів би детальніше розглянути варіант безголового хрому, згаданий у відповіді Дейва Ханта.

chrome 57 щойно запустив цю функцію. Ви можете використовувати його, передавши прапор --headhead через ChromeDriver, для отримання додаткової інформації див. Обговорення в цьому питанні


0

Існує проект, пов'язаний з PhantomJS , який називається GhostDriver , який призначений для запуску екземплярів PhantomJS у сітці Selenium за допомогою дротового протоколу JSON webdriver. Це, мабуть, те, що ви шукаєте, хоча цьому питанню вже 4 роки.


0

У MacOSX мені не вдалося приховати вікно браузера, але принаймні я придумав, як перемістити його на інший дисплей, щоб це не настільки порушило мій робочий процес. Поки Firefox запускає тести, просто натисніть і утримуйте клавішу миші на його піктограмі в док-станції, виберіть Параметри та Призначити дисплею 2.


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

До речі, ця функція потрібна будь-якому розробнику, що працює на e2e, який логічно створить браузери. В середовищі розробки неприємно мати справу з тим вікном, яке постійно з’являється і яке ви можете випадково взаємодіяти, роблячи тест невдалим.


0

Використання безголового Chrome було б найкращим вибором, або ви могли б розміщувати повідомлення безпосередньо на сайті, щоб взаємодіяти з ним, що заощадило б багато обчислювальної потужності для інших речей / процесів. Я використовую це під час тестування ботів веб-автоматизації, які шукають взуття на кількох сайтах із використанням важких елементів процесора, чим більше енергії ви економите і чим простіша ваша програма, тим простіше запускати кілька процесів одночасно з більшою швидкістю і muhc і надійність.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.