Я создал это test.html
<!doctype html>
<html>
<head>
<title>test</title>
<script>
function inc() {
var counter = document.test.counter;
counter.value = parseInt(counter.value) + 1;
}
</script>
</head>
<body>
<form name="test">
<p>
<input type="text" value="0" name="counter" size="5">
<input type="button" id="increment" value="increment" onclick="inc();">
</p>
</form>
</body>
</html>
и test.py
import time
from os import path
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get(path.abspath("test.html"))
try:
n = 5
for i in range(n):
print("push %d / %d" % (i + 1, n))
driver.find_element_by_id("increment").click()
time.sleep(1)
except KeyboardInterrupt:
print("interrupted")
print("waiting")
time.sleep(5)
print("bye")
в том же каталоге.
Когда я запускаю test.py
из командной строки, используя команду python test.py
,
и я нажимаю Ctrl + C до печати "waiting"
,
окно Google Chrome, открытое через Selenium, закрыто.
В моем реальном коде цикл вызывается из интерактивной консоли Python и выполняется неопределенное время.
Я хочу, чтобы прерывания клавиатуры прерывались из цикла без закрытия окна Google Chrome для исследования и разработки.
Что я должен сделать, чтобы заархивировать это?
Мое окружение:
- Windows 7 Home Premium с пакетом обновления 1 (64 бита)
- Python 3.5.1 (64 бита)
- Селен 3.141.0
- urllib3 1.24.1
- ChromeDriver 2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387)
- Google Chrome 72.0.3626.119 (официальная сборка) (64 бита)
Система предложила вопрос Selenium: выход из скрипта Python без закрытия браузера , но этот вопрос не показался мне полезным, потому что:
raw_input()
, кажется, ожидает ввода пользователя. Я хочу, чтобы моя программа запускалась без ручного ввода, пока не сработает прерывание клавиатуры.
- В моем реальном коде время для сна велико (около 10 минут) вместо 1 секунды в образце. Цикл должен быть разорван сразу после того, как я запускаю прерывания клавиатуры, а не после того, как будет сделан сон.