如何在不关闭Selenium控制的浏览器的情况下接受键盘中断

时间:2019-03-05 13:25:53

标签: python selenium selenium-webdriver selenium-chromedriver

我创建了这个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时, 然后在打印"waiting"之前按 Ctrl + C , 通过Selenium打开的Google Chrome窗口已关闭。

在我的实际代码中,循环是从交互式Python控制台调用的,并运行不确定的时间。 我想触发键盘中断来中断循环,而不关闭Google Chrome浏览器窗口进行调查和开发。

该怎么存档?

我的环境:

  • Windows 7 Home Premium Service Pack 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: Quit Python script without closing browser,但该问题对我似乎没有帮助,因为:

  • raw_input()似乎正在等待用户输入。在启动键盘中断之前,我希望程序无需手动输入即可运行。
  • 在我的实际代码中,睡眠时间很长(大约10分钟),而不是示例中的1秒。应该在触发键盘中断后立即中断循环,而不是在睡眠结束后终止。

0 个答案:

没有答案