Существует три запроса page.find. Первый просто удаляет всплывающее окно с файлами cookie, поэтому его можно игнорировать.
Второй запрос:
Код: Выделить всё
page.find(("emailOrGhin", timeout = 1)
У меня есть вопросы по третьему запросу:
Код: Выделить всё
page.find("emailOrGhinnowayjunkXyq", timeout=1)
Еще интереснее то, что когда запросу не удается найти соответствующий элемент, исключение (например, ElementNotFound) не создается. Я попробовал и то, и другое, кроме asyncio.TimeoutError и кроме Exception as e, но оператор завершается успешно и возвращает None. Я понимаю, что могу проверить None, но я ожидал, что будет вызвано исключение. К сожалению, я нигде не могу найти список исключений Nodriver.
Я надеюсь на понимание/совет по двум вопросам:
- Почему опция timeout ведет себя таким образом.
- Какая ошибка может быть перехвачена, если элемент не найден, поскольку в настоящее время оператор возвращает None.
Код: Выделить всё
from datetime import timedelta
from time import sleep
import asyncio
import datetime
import sys
import nodriver as uc
passed_website = "https://www.google.com"
# Main Processing Controller! = Mainline
def a_main_processor():
loop =asyncio.new_event_loop()
print("Line 20")
driver = loop.run_until_complete(b_main_line_processing())
driver.stop()
print("Line 28")
return driver
# Main Line Processing Controller! = Mainline
async def b_main_line_processing():
driver = await uc.start() # maximize=True) # Start a new Chrome instance
await driver.main_tab.maximize()
sleep(1)
ghin_url = "http://www.ghin.com/lookup.aspx"
try:
page = await driver.get(ghin_url, new_tab=False, new_window=False)
except asyncio.TimeoutError:
print("C100 - error", e)
return driver
# Find and Select Reject All Cookie Settings
try:
cookies = await page.find("Reject All")
await cookies.click()
except asyncio.TimeoutError:
print("C105 - error:0, e")
return driver
# Find UserName Entry field name
try:
timepoint = datetime.datetime.now()
user_name = await page.find("emailOrGhin", timeout = 1)
print("First checkpoint =", str(datetime.datetime.now() - timepoint)[-9:-4], user_name)
except Exception as e:
print("First error took", str(datetime.datetime.now() - timepoint)[-9:-4], e)
return driver
# Pass bogus name to trip error
try:
timepoint = datetime.datetime.now()
user_name = await page.find("emailOrGhinnowayjunkXyq", timeout=1)
print("Second checkpoint =", str(datetime.datetime.now() - timepoint)[-9:-4], user_name)
#except Exception as e:
except asyncio.TimeoutError:
print("Second error took", str(datetime.datetime.now() - timepoint)[-9:-4], e)
return driver
driver = a_main_processor()
print("Line 62")
Код: Выделить всё
Line 20
First checkpoint = 00.01
Second checkpoint = 01.52 None
Line 28
Line 62
successfully removed temp profile C:\Users\pinev\AppData\Local\Temp\uc_5yaidgqs
Process finished with exit code 0
Подробнее здесь: https://stackoverflow.com/questions/798 ... -not-found
Мобильная версия