что делает метод driver close
В чем разница между этими
Какой из них следует использовать и когда?
ОТВЕТЫ
Ответ 1
Это хороший вопрос, который я видел, когда люди используют Close(), когда они этого не делают. Я просмотрел исходный код для Selenium Client и WebDriver С# Bindings и нашел следующее.
В приведенном ниже коде будет удален объект драйвера, завершается сеанс и закрывается все браузеры, открытые во время проверки, будет ли тест терпеть неудачу или пройти.
В заключение убедитесь, что перед выходом из программы вызывается Quit() или Dispose(), и не используйте метод Close(), если вы не уверены в том, что делаете.
Примечание
Я нашел этот вопрос, когда пытаюсь выяснить связанную проблему, почему моя виртуальная машина закончилась из жесткого диска. Оказывается, исключение вызывало Quit() или Dispose(), чтобы не вызываться каждый прогон, который затем заставлял папку appData заполнять жесткий диск. Поэтому мы правильно использовали метод Quit(), но код был недоступен. Резюме убедитесь, что все пути кода очистят ваши неуправляемые объекты, используя безопасные шаблоны исключений или реализующие IDisposable
И
В случае RemoteDriver, вызывающего Quit() или Dispose(), также будет закрыт сеанс на сервере Selenium. Если сеанс не закрыт, файлы журнала для этого сеанса остаются в памяти.
Ответ 2
Ответ 3
Объяснение варианта использования: Вы должны использовать driver.quit всякий раз, когда хотите завершить программу. Он закроет все открытые окна браузера и завершит сеанс WebDriver. Если вы не используете driver.quit в конце программы, сеанс WebDriver не закроется должным образом и файлы не будут удалены из памяти. Это может привести к ошибкам утечки памяти.
Приведенное выше объяснение должно объяснить разницу между методами driver.close и driver.quit в WebDriver. Я надеюсь, что вы найдете это полезным.
На следующем сайте есть несколько полезных советов по тестированию селена: Ссылка
Ответ 4
quit() : выход из этого драйвера, закрытие каждого связанного окна, которое было открыто.
close() : закройте текущее окно, выйдя из браузера, если оно открыто в настоящее время.
Ответ 5
Основанный на проблеме на Github PhantomJS, quit() не завершает процесс PhantomJS. Вы должны использовать:
Ответ 6
Вы можете обратиться к официальному документу по селену по ссылке.
Ответ 7
В процессе автоматизации, если открыто более одного окна браузера, команда close() закроет только текущее окно браузера, которое в данный момент находится в фокусе. Остальные окна браузера не будут закрыты. Следующий код можно использовать для закрытия текущего окна браузера:
Если в процессе автоматизации открывается только одно окно браузера, команды close() и quit() работают одинаково. Оба будут различаться по своим функциям, если во время автоматизации открыто более одного окна браузера.
Команда утилизации Dispose() должен вызвать Quit(), и похоже, что это так. Однако эта проблема также связана с тем, что любые последующие действия блокируются до тех пор, пока PhantomJS не будет закрыт вручную.
Selenium для Python. Глава 2. Первые Шаги
Продолжение перевода неофициальной документации Selenium для Python.
Перевод сделан с разрешения автора Baiju Muthukadan.
Оригинал можно найти здесь.
Содержание:
2. Первые шаги
2.1. Простое использование
Если вы установили привязку Selenium к Python, вы можете начать использовать ее с помощью интерпретатора Python.
Код выше может быть сохранен в файл (к примеру, python_org_search.py), и запущен:
Запускаемый вами Python должен содержать установленный модуль selenium.
2.2. Пошаговый разбор примера
Модуль selenium.webdriver предоставляет весь функционал WebDriver’а. На данный момент WebDriver поддерживает реализации Firefox, Chrome, Ie и Remote. Класс Keys обеспечивает взаимодействие с командами клавиатуры, такими как RETURN, F1, ALT и т.д…
Далее создается элемент класса Firefox WebDriver.
Метод driver.get перенаправляет к странице URL в параметре. WebDriver будет ждать пока страница в чем разница» rel=dofollow»>страница не загрузится полностью (то есть, событие “onload” игнорируется), прежде чем передать контроль вашему тесту или скрипту. Стоит отметить, что если страница в чем разница» rel=dofollow»>страница использует много AJAX-кода при загрузке, то WebDriver может не распознать, загрузилась ли она полностью:
Следующая строка — это утверждение (англ. assertion), что заголовок содержит слово “Python” [assert позволяет проверять предположения о значениях произвольных данных в произвольном месте программы. По своей сути assert напоминает констатацию факта, расположенную посреди кода программы. В случаях, когда произнесенное утверждение не верно, assert возбуждает исключение. Такое поведение позволяет контролировать выполнение программы в строго определенном русле. Отличие assert от условий заключается в том, что программа с assert не приемлет иного хода событий, считая дальнейшее выполнение программы или функции бессмысленным — Прим. пер.]:
WebDriver предоставляет ряд способов получения элементов с помощью методов find_element_by_*. Для примера, элемент ввода текста input может быть найден по его атрибуту name методом find_element_by_name. Подробное описание методов поиска элементов можно найти в главе Поиск Элементов:
После этого мы посылаем нажатия клавиш (аналогично введению клавиш с клавиатуры). Специальные команды могут быть переданы с помощью класса Keys импортированного из selenium.webdriver.common.keys:
После ответа страницы, вы получите результат, если таковой ожидается. Чтобы удостовериться, что мы получили какой-либо результат, добавим утверждение:
В завершение, окно браузера закрывается. Вы можете также вызывать метод quit вместо close. Метод quit закроет браузер полностью, в то время как close закроет одну вкладку. Однако, в случае, когда открыта только одна вкладка, по умолчанию большинство браузеров закрывается полностью:
2.3. Использование Selenium для написания тестов
Selenium чаще всего используется для написания тестовых ситуаций. Сам пакет selenium не предоставляет никаких тестовых утилит или инструментов разработки. Вы можете писать тесты с помощью модуля Python unittest. Другим вашим выбором в качестве тестовых утилит/инструментов разработки могут стать py.test и nose.
В этой главе, в качестве выбранной утилиты будет использоваться unittest. Ниже приводится видоизмененный пример с использованием этого модуля. Данный скрипт тестирует функциональность поиска на сайте python.org:
Вы можете запустить тест выше из командной строки следующей командой:
Результат сверху показывает, что тест завершился успешно.
2.4. Пошаговый разбор примера
Сначала были импортированы все основные необходимые модули. Модуль unittest встроен в Python и реализован на Java’s JUnit. Этот модуль предоставляет собой утилиту для организации тестов.
Модуль selenium.webdriver предоставляет весь функционал WebDriver’а. На данный момент WebDriver поддерживает реализации Firefox, Chrome, Ie и Remote. Класс Keys обеспечивает взаимодействие с командами клавиатуры, такими как RETURN, F1, ALT и т.д…
Класс теста унаследован от unittest.TestCase. Наследование класса TestCase является способом сообщения модулю unittest, что это тест:
setUp — это часть инициализации, этот метод будет вызываться перед каждым методом теста, который вы собираетесь написать внутри класса теста. Здесь мы создаем элемент класса Firefox WebDriver.
Далее описан метод нашего теста. Метод теста всегда должен начинаться с фразы test. Первая строка метода создает локальную ссылку на объект драйвера, созданный методом setUp.
Метод driver.get перенаправляет к странице URL в параметре. WebDriver будет ждать пока страница в чем разница» rel=dofollow»>страница не загрузится полностью (то есть, событие “onload” игнорируется), прежде чем передать контроль вашему тесту или скрипту. Стоит отметить, что если страница в чем разница» rel=dofollow»>страница использует много AJAX-кода при загрузке, то WebDriver может не распознать, загрузилась ли она полностью:
Следующая строка — это утверждение, что заголовок содержит слово “Python”:
WebDriver предоставляет ряд способов получения элементов с помощью методов find_element_by_*. Для примера, элемент ввода текста input может быть найден по его атрибуту name методом find_element_by_name. Подробное описание методов поиска элементов можно найти в главе Поиск Элементов:
После этого мы посылаем нажатия клавиш (аналогично введению клавиш с клавиатуры). Специальные команды могут быть переданы с помощью класса Keys импортированного из selenium.webdriver.common.keys:
После ответа страницы, вы получите результат, если таковой ожидается. Чтобы удостовериться, что мы получили какой-либо результат, добавим утверждение:
Метод tearDown будет вызван после каждого метода теста. Это метод для действий чистки. В текущем методе реализовано закрытие окна браузера. Вы можете также вызывать метод quit вместо close. Метод quit закроет браузер полностью, в то время как close закроет одну вкладку. Однако, в случае, когда открыта только одна вкладка, по умолчанию большинство браузеров закрывается полностью.:
Завершающий код — это стандартная вставка кода для запуска набора тестов [Сравнение __name__ с «__main__» означает, что модуль (файл программы) запущен как отдельная программа («main» (англ.) — «основная», «главная») (а не импортирован из другого модуля). Если вы импортируете модуль, атрибут модуля __name__ будет равен имени файла без каталога и расширения — Прим. пер.]:
2.5. Использование Selenium с remote WebDriver
Строка выше сообщает о том, что вы можете использовать указанный URL для подключения remote WebDriver. Ниже приводится несколько примеров:
Переменная desired_capabilities — это словарь. Вместо того, чтобы использовать словари по умолчанию, вы можете явно прописать значения:
Selenium WebDriver: quit или close?
В этой статье речь пойдет о том как правильно останавливать работу драйвера или, другими словами, как закрыть браузер.
Запускается Selenium driver автоматически во время инициализации, для запуска у него нет отдельного метода.
Если по какой-либо причине запуск браузера не произойдет, то возникнет исключение и вебдрайвер не создастся.
Если же вам нужно закрыть отдельное открытое окно, используйте метод close(). Обратите внимание, что метод close() после закрытия одного из окон не передает управление в предыдущее открытое окно, Вы должны сделать это самостоятельно:
Если вы хотите просто уйти с текущей страницы, но не закрывать ее или браузер, можете просто использовать:
3 комментариев
Еще маленький нюанс с close() и quit() при работе с IE (с другими не проверял)
При выполнении close():
— НЕ стопается IEDriverServer.exe
— НЕ возвращаются прежние настройки прокси (если WebDriver стартовал с кастомными настройками)
К сожалению, выполнить сначала close(), потом quit() (если было открыто одно окно браузера) не удается. WebDriver на попытку quite() вываливает «session XXX does not exist». Как это красиво обойти — пока не известно
С другими браузерами тоже самое. Эти 2 метода принципиально разные, метод close() не завершает работу сервисов, он просто закрывает одну страницу (браузер уже закрывается сам собой, если страница в чем разница» rel=dofollow»>страница последняя), поэтому так и происходит. Для корректного завершения работы всегда используйте quit(), он закроет все открытые окна сам. Если же необходимо использовать close() для закрытия одного окна, но оно может быть и единственным, то сделайте обвертку и проверяйте количество открытых окон:
В чем разница между ними
Какой из них использовать и когда?
10 ответов
Если я fopen файл, то в чем разница между вызовом fclose или close и тем, какой из них я должен использовать? Если раздвоенные дети также имеют доступ к файлу, что они должны делать, когда они закончат с файлом?
Это хороший вопрос, я видел, как люди используют Close(), когда им не следует этого делать. Я посмотрел в исходном коде для привязок Selenium Клиент & WebDriver C# и нашел следующее.
Приведенный ниже код удалит объект драйвера, завершит сеанс и закроет все браузеры, открытые во время теста, независимо от того, завершится ли тест неудачно или пройдет.
Таким образом, убедитесь, что перед выходом из программы вызывается Quit() или Dispose(), и не используйте метод Close(), если вы не уверены в том, что делаете.
Примечание
Я нашел этот вопрос, когда попытался выяснить связанную с этим проблему, почему у моих VM заканчивалось место на жестком диске. Оказывается, исключение приводило к тому, что Quit() или Dispose() не вызывались при каждом запуске, что затем приводило к заполнению папки appData на жестком диске. Таким образом, мы правильно использовали метод Quit(), но код был недоступен. Сводка убедитесь, что все пути кода очистят ваши неуправляемые объекты с помощью шаблонов безопасности исключений или реализуют IDisposable
Также
В случае RemoteDriver вызов Quit() или Dispose() также закроет сеанс на сервере Selenium. Если сеанс не закрыт, файлы журнала для этого сеанса остаются в памяти.
driver.quit – Этот метод в основном вызывает driver.dispose теперь внутренний метод, который, в свою очередь, закрывает весь браузер windows и изящно завершает сеанс WebDriver.
Объяснение варианта использования: Вы должны использовать driver.quit всякий раз, когда хотите завершить программу. Он закроет все открытые браузеры windows и завершит сеанс WebDriver. Если вы не используете driver.quit в конце программы, сеанс WebDriver не закроется должным образом, и файлы не будут удалены из памяти. Это может привести к ошибкам утечки памяти.
Приведенное выше объяснение должно объяснить разницу между методами driver.close и driver.quit в WebDriver. Надеюсь, вы найдете это полезным.
На следующем веб-сайте есть несколько хороших советов по тестированию selenium : Ссылка
При порождении дочерних процессов через spawn()/exec()/. в Node.js происходит событие ‘close’ и ‘exit’ для дочерних процессов. В чем разница между этими двумя понятиями и когда вам нужно что-то использовать?
Я заметил, что pop3.quit() помечает электронные письма как read или deleted или что-то в этом роде (т. е. у меня есть один скрипт, который читает электронные письма и запускает pop3.quit() в конце файла, и это препятствует повторному чтению электронных писем, которые были прочитаны во время этого.
quit() : Завершает работу этого драйвера, закрывая все связанные окна, которые были открыты.
close() : Закройте текущее окно, выйдя из браузера, если это последнее открытое в данный момент окно.
Во время процесса автоматизации, если открыто более одного окна браузера, команда close() закроет только текущее окно браузера, которое в данный момент находится в фокусе. Оставшийся браузер windows не будет закрыт. Для закрытия текущего окна браузера можно использовать следующий код:
Если процесс автоматизации открывает только одно окно браузера, команды close() и quit() работают одинаково. Оба они будут отличаться по своей функциональности, если во время автоматизации будет открыто более одного окна браузера.
Для приведенной выше ссылки : нажмите здесь
Команда Dispose Dispose() должна вызвать Quit(), и, похоже, это так. Однако у него также есть та же проблема в том, что любые последующие действия блокируются до тех пор, пока PhantomJS не будет закрыт вручную.
Основываясь на проблеме с Github из PhantomJS, quit() не завершает процесс PhantomJS. Вы должны использовать:
close():- Предположим, вы открыли несколько браузеров windows с одним и тем же экземпляром драйвера, теперь вызов close() на экземпляре драйвера закроет текущее окно, на которое указывает экземпляр драйвера. Но экземпляр драйвера все еще остается в памяти и может использоваться для обработки других открытых браузеров windows.
quit():- Если вы вызовете quit() на экземпляре драйвера и откроете один или несколько браузеров windows, он закроет все открытые браузеры windows, а экземпляр драйвера будет собран, т. е. удален из памяти. Таким образом, теперь вы не можете использовать этот экземпляр драйвера для выполнения других операций после вызова quit() на нем. Если вы это сделаете, это вызовет исключение.
dispose():- Я не думаю, что существует метод dispose для экземпляра WebDriver.
Вы можете перейти по ссылке this selenium official java doc для справки.
WebDriver.Close() Этот метод используется для закрытия текущего открытого окна. Он закрывает текущее открытое окно, на котором сосредоточен драйвер.
WebDriver.Quit() Этот метод используется для уничтожения экземпляра WebDriver. Он закрывает все браузерные Windows, связанные с этим драйвером, и благополучно завершает сеанс. WebDriver.Quit() вызывает Dispose.
WebDriver.Dispose() Этот метод закрывает весь браузер windows и безопасно завершает сеанс
Разница между driver.close() & driver.quit()
driver.close – Закрывает окно браузера, на котором установлен фокус.
driver.quit – Он в основном вызывает метод driver.dispose, который, в свою очередь, закрывает весь браузер windows и изящно завершает сеанс WebDriver.
Насколько я понимаю, driver.close(); закроет текущий браузер, а driver.quit(); закроет весь браузер, который.
Похожие вопросы:
Кто-нибудь скажет мне, в чем разница между встроенной функцией exit() и quit()? Пожалуйста, поправьте меня, если я ошибаюсь в какой-то момент. Я пытался проверить это, но ничего не получаю. 1) Когда.
Если я fopen файл, то в чем разница между вызовом fclose или close и тем, какой из них я должен использовать? Если раздвоенные дети также имеют доступ к файлу, что они должны делать, когда они.
При порождении дочерних процессов через spawn()/exec()/. в Node.js происходит событие ‘close’ и ‘exit’ для дочерних процессов. В чем разница между этими двумя понятиями и когда вам нужно что-то.
Я заметил, что pop3.quit() помечает электронные письма как read или deleted или что-то в этом роде (т. е. у меня есть один скрипт, который читает электронные письма и запускает pop3.quit() в конце.
Есть ли какая-то разница между ‘quit’ и ‘exit’, когда я выхожу из hive?
В чем разница между этими
Какой из них следует использовать и когда?
ОТВЕТЫ
Ответ 1
Это хороший вопрос, который я видел, когда люди используют Close(), когда они этого не делают. Я просмотрел исходный код для Selenium Client и WebDriver С# Bindings и нашел следующее.
В приведенном ниже коде будет удален объект драйвера, завершается сеанс и закрывается все браузеры, открытые во время проверки, будет ли тест терпеть неудачу или пройти.
В заключение убедитесь, что перед выходом из программы вызывается Quit() или Dispose(), и не используйте метод Close(), если вы не уверены в том, что делаете.
Примечание
Я нашел этот вопрос, когда пытаюсь выяснить связанную проблему, почему моя виртуальная машина закончилась из жесткого диска. Оказывается, исключение вызывало Quit() или Dispose(), чтобы не вызываться каждый прогон, который затем заставлял папку appData заполнять жесткий диск. Поэтому мы правильно использовали метод Quit(), но код был недоступен. Резюме убедитесь, что все пути кода очистят ваши неуправляемые объекты, используя безопасные шаблоны исключений или реализующие IDisposable
И
В случае RemoteDriver, вызывающего Quit() или Dispose(), также будет закрыт сеанс на сервере Selenium. Если сеанс не закрыт, файлы журнала для этого сеанса остаются в памяти.
Ответ 2
Ответ 3
Объяснение варианта использования: Вы должны использовать driver.quit всякий раз, когда хотите завершить программу. Он закроет все открытые окна браузера и завершит сеанс WebDriver. Если вы не используете driver.quit в конце программы, сеанс WebDriver не закроется должным образом и файлы не будут удалены из памяти. Это может привести к ошибкам утечки памяти.
Приведенное выше объяснение должно объяснить разницу между методами driver.close и driver.quit в WebDriver. Я надеюсь, что вы найдете это полезным.
На следующем сайте есть несколько полезных советов по тестированию селена: Ссылка
Ответ 4
quit() : выход из этого драйвера, закрытие каждого связанного окна, которое было открыто.
close() : закройте текущее окно, выйдя из браузера, если оно открыто в настоящее время.
Ответ 5
Основанный на проблеме на Github PhantomJS, quit() не завершает процесс PhantomJS. Вы должны использовать:
Ответ 6
Вы можете обратиться к официальному документу по селену по ссылке.
Ответ 7
В процессе автоматизации, если открыто более одного окна браузера, команда close() закроет только текущее окно браузера, которое в данный момент находится в фокусе. Остальные окна браузера не будут закрыты. Следующий код можно использовать для закрытия текущего окна браузера:
Если в процессе автоматизации открывается только одно окно браузера, команды close() и quit() работают одинаково. Оба будут различаться по своим функциям, если во время автоматизации открыто более одного окна браузера.
Команда утилизации Dispose() должен вызвать Quit(), и похоже, что это так. Однако эта проблема также связана с тем, что любые последующие действия блокируются до тех пор, пока PhantomJS не будет закрыт вручную.