Селен: L oop веб-драйверы (Python) - PullRequest
1 голос
/ 12 апреля 2020

Я хочу запустить несколько chrome экземпляров с селеном. Я пытался l oop веб-драйверы, но селен продолжает закрывать экземпляры.

Вот код:

from selenium import webdriver


user = str(input("Do you want to run this program? "))
amount = 0

if user == "yes":
    amount = int(input("How many instances do you want to run? "))
    for w in range(1, amount+1):
        webdriver.Chrome("path of my driver")
elif user == "no":
    print("Program is closing...")
else:
    print("Invalid input")

Странно то, что экземпляры не закрываются, если я их пишу без аль oop:

from selenium import webdriver


user = str(input("Do you want to run this program? "))

if user == "yes":
    driver1 = webdriver.Chrome("path of driver")
    driver2 = webdriver.Chrome("path of driver")
    driver3 = webdriver.Chrome("path of driver")
    driver4 = webdriver.Chrome("path of driver")
    driver5 = webdriver.Chrome("path of driver")
elif user == "no":
    print("Program is closing...")
else:
    print("Invalid input")

Есть ли решение моей проблемы?

1 Ответ

0 голосов
/ 13 апреля 2020

Чтобы закрыть экземпляры, когда вы пишете это без al oop, выполните следующее:

driver.close () - закрывает окно браузера, на котором установлен фокус.

driver.quit () - он в основном вызывает метод driver.dispose, который, в свою очередь, закрывает весь браузер windows и корректно завершает сеанс WebDriver.

Вам следует использовать driver.quit всякий раз, когда вы хотите закончить программу. Он закроет все открытое окно браузера и завершит сеанс WebDriver.

Подумайте о том, чтобы написать пример l oop следующим образом, это намного лучше справится с закрытием экземпляров.

Использование для запуска модуля multithreading или multiprocessing или subprocess задание параллельно (почти параллельно).

Пример многопоточности

from selenium import webdriver
import threading
import time


def test_logic():
    driver = webdriver.Firefox()
    url = 'https://www.google.co.in'
    driver.get(url)
    # Implement your test logic
    time.sleep(2)
    driver.quit()

N = 5   # Number of browsers to spawn
thread_list = list()

# Start test
for i in range(N):
    t = threading.Thread(name='Test {}'.format(i), target=test_logic)
    t.start()
    time.sleep(1)
    print t.name + ' started!'
    thread_list.append(t)

# Wait for all thre<ads to complete
for thread in thread_list:
    thread.join()

print 'Test completed!'

Здесь создаются 5 браузеров для одновременного запуска тестовых случаев. Вместо того, чтобы реализовать тестовую логику c, я поставил время ожидания 2 секунды с целью демонстрации. Код запустит 5 firefox браузеров (протестировано с python 2.7), откроет Google и подождет 2 секунды, прежде чем выйти.

Журналы:

C:\Python27\python.exe C:/Users/swadchan/Documents/TestPyCharm/stackoverflow/so49617485.py
Test 0 started!
Test 1 started!
Test 2 started!
Test 3 started!
Test 4 started!
Test completed!

Process finished with exit code 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...