我正在等待可能会或可能不会出现的元素。 在某些时候,如果它没有显示我希望能够按“输入” 并转到代码的其他部分。
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一样),而是执行其他代码。
欢迎提出建议。
答案 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块中处理该元素。
如果您想避免手动干预,可以尝试这种方法。