我可以按一下按钮停止一些代码吗?

时间:2016-09-28 19:30:26

标签: python selenium

我正在等待可能会或可能不会出现的元素。 在某些时候,如果它没有显示我希望能够按“输入” 并转到代码的其他部分。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get("http://somelink.com")

Try:
  element = WebDriverWait(driver, 1500).until(EC.presence_of_element_located((By.ID, 'someid')))
  # I want to be able to interrupt the waiting at some point before the 1500 secs.
except: # if I click on "enter"
  # some other code
  pass

我不知道是否可以使用try / except,timers或者根本不可能。 我不希望脚本退出(与ctrl + c一样),而是执行其他代码。

欢迎提出建议。

2 个答案:

答案 0 :(得分:0)

如果您可以被问到是否要定期继续,在这种情况下为15秒,并且您想要使用除外(就像您在评论中所述),那么以下代码应该可以使用。它并不是最优雅的,但它确实可以解决问题。

try:
    while True:
        try:
            element = WebDriverWait(driver,15).until(EC.presence_of_element_located((By.ID, 'someid')))
            break
        except Exception as e:
            do_continue = input("Continue? (y/n)")
            if do_continue == "n":
                raise e
except:

    print 'Doing other code'

答案 1 :(得分:0)

您可以使用Try Catch块处理此问题。在case元素中出现的异常没有出现,在catch中提到异常,并且如果元素没有出现,执行将简单地进一步移动。 如果确实出现,则编写代码以在Try块中处理该元素。

如果您想避免手动干预,可以尝试这种方法。