【发布时间】:2019-02-01 18:37:39
【问题描述】:
我用 Python 编写了一个简单的代码来浏览一些存储在元组中的网页。目标是定期浏览这些页面并检查它们是否在线并做出响应。示例代码:
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
browser = webdriver.Chrome()
links = ('https://stackoverflow.com/', 'https://stackexchange.com/')
while True:
for url in links:
try:
browser.get(url)
print('OK')
except Exception as e:
print('Not OK: {}'.format(e))
但是即使我离线,这段代码也会打印“OK”,所以我猜如果没有到达实际页面,get() 方法不会处理任何异常。
我考虑过使用WebDriverWait(browser, 5).until(EC.presence_of_element_located((By.ID, 'some_common_id')))
检查我是否已到达实际页面,但我的元组可能包含不同的 url 地址,没有共同的 ID、类或元素...
然后我想扭转这个并使用WebDriverWait(browser, 5).until(EC.presence_of_element_located((By.ID, 'main-frame-error')))
在离线时搜索您在 Google Chrome 中获得的特定元素(在他们的“恐龙游戏”页面上)。
但在这种情况下,每次成功到达我的元组中的页面时,脚本都必须等待 5 秒,这会不必要地减慢整个测试。
我认为必须有一种更简单的方法来使用 selenium 浏览页面并知道它是否实际到达,但我还没有找到解决方案。
【问题讨论】:
标签: python-3.x selenium selenium-webdriver webdriver python-requests