Я хочу проверить, когда именно я нахожусь на определенной веб-странице. На веб-сайте есть панель поиска, и через нее я хочу убедиться, что я на веб-сайте

#python #selenium

#python #селен

Вопрос:

Я попытался использовать ожидания selenium:

 def locationchecker():  
     try:
         searchbox_identifyer = WebDriverWait(driver, 7200).until(
         EC.presence_of_element_located((By.ID, 'searchTerm_Header'))
     )
     print('On homepage :)')
 except:
     print('Error')
 

Проблема в том, что когда я делаю недействительным идентификатор, например, —> ‘earchTerm-Header’, он выдает сообщение об ошибке только при закрытии браузера вручную.Подводя итог, я просто хочу, чтобы браузер ждал, пока элемент не будет найден, и если элемент не может быть найден напрямую, браузер ждет.

Комментарии:

1. Трудно понять ваш вопрос

Ответ №1:

Привет и добро пожаловать в stackoverflow.

Что касается «неправильной ошибки»:

Пожалуйста, измените время ожидания с 7200 на что-то вроде 20, а затем повторите попытку с неправильным идентификатором. (7200 = 120 минут ожидания, довольно долго :))

Что касается «добавления метки времени»

—> Попробуйте импортировать время

 import time
from time import gmtime, strftime
print('current timestamp: {}'.format(strftime("%Y-%m-%d %H:%M:%S", gmtime())))
 

таким образом, ваш полный код должен выглядеть следующим образом

 import time
from time import gmtime, strftime
def locationchecker():  
     try:
         searchbox_identifyer = WebDriverWait(driver, 20).until(
         EC.presence_of_element_located((By.ID, 'searchTerm_Header'))
     )
     print('current timestamp / on homepage: {}'.format(strftime("%Y-%m-%d %H:%M:%S", gmtime())))
 except:
     print('Error')

print('current timestamp: {}'.format(strftime("%Y-%m-%d %H:%M:%S", gmtime())))
 

Дайте мне знать, если это поможет.

Комментарии:

1. Спасибо, работает лучше, но разве браузер в этом случае не ждет только 20 секунд: (драйвер, 20), и если элемент не был найден за эти 20 секунд, браузер перестает ждать?

2. Точно, но это ответ на ваш вопрос, почему вы не получаете сообщение об ошибке (потому что скрипт просто еще не выполнен. Имеет ли это смысл? Очевидно, вы можете установить время ожидания на любое желаемое значение.