Как мы создаем объекты селенового веб-драйвера в цикле и закрываем окно после его окончания? - PullRequest
0 голосов
/ 25 января 2019

Итак, я пытаюсь открыть каждую ссылку в списке (который запускается циклом for) и выполнить некоторые операции над этой ссылкой.

Я хочу открыть окно для каждой ссылки вцикл, работайте с ним, закройте его и затем запустите цикл заново.

for link in links_list:
    driver = webdriver.Chrome('D:/location-of-driver.exe')
    driver.implicitly_wait(5)

    driver.get(link)

    a_variable = driver.find_element_by_css_selector('selector')

    time.sleep(3)  # required for my usage

    driver.close()  # this I believe should close the window

Таким образом, цикл повторяется 1 раз и прерывается, когда он снова достигает вершины.driver.close () работает для первой итерации

Я бы хотел, чтобы окно с текущей ссылкой открывалось в течение 3 секунд, а цикл начинался заново.

Ошибки:

Traceback (most recent call last):
  File "./play.py", line 18, in <module>
    driver.get(link)
selenium.common.exceptions.WebDriverException: Message: invalid session id
(Driver info: chromedriver=2.45.615291 
(ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),platform=Windows NT 10.0.17134 
x86_64)

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 25 января 2019

@ Gaurav, как обсуждалось, пожалуйста, попробуйте это. Если у вас возникла подобная проблема, то, я думаю, вы обновили драйвер Chrome до последней версии.

links_list = ["https://www.google.com/", "https://www.w3schools.com/","https://www.toolsqa.com/"]

for link in links_list:
    driver = webdriver.Chrome('D:/Java/TestChrome/lib/chromedriver.exe')
    driver.implicitly_wait(5)
    print(link)
    driver.get(link)

   # a_variable = driver.find_element_by_css_selector('selector')

    time.sleep(3)  # required for my usage

    #driver.quit()  # this I believe should close the window
    driver.close()

print('pass')
0 голосов
/ 25 января 2019
driver.quit()

Используется для выхода из драйвера и закрытия всех связанных окон.

driver.close()

Используется для закрытия текущего окна.

Ваша ошибка возникает из-за попытки закрыть окноокно, когда драйвер уже был завершен.

Решение

Используйте только метод close, вам не нужно использовать quit для этого сценария.

...