Как изменить стандартное ожидание в течение 30 секунд для элементов, которые не могут быть найдены? - PullRequest
0 голосов
/ 20 июня 2019

Некоторые элементы могут отсутствовать на странице, но мне нужно подождать 30 секунд, что очень огорчает меня, потому что я должен найти много элементов, которые могут не существовать. Поэтому проблема того, как изменить 30-секундный элемент по умолчанию, который не может быть найден, беспокоит меня.

Связано ли это время ожидания по умолчанию с пакетом селена?

WebDriverWait (драйвер, 5) .until (EC.presence_of_element_located ((By.XPATH, '// input [@ qtype = "302"]')))

WebDriverWait (драйвер, 5) .until (EC.presence_of_all_elements_located ((By.XPATH, '// input [@ qtype = "302"]')))

Но они не оправдали моего ожидания ожидания десяти секунд

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

driver = webdriver.Chrome()
driver.get(‘xxx')
driver.implicitly_wait(10)

try:
    start = perf_counter()
    dLfy_topic = WebDriverWait(driver,5).until(EC.presence_of_all_elements_located((By.XPATH, '//input[@qtype="302"]')))
except:
    during = perf_counter() - start
    print(during)
finally:
    if during > 10:
        print("You failed")
    else:
        print("You are successful")

+30,53863444600001 Вы потерпели неудачу

Хотел бы я подождать десять секунд вместо тридцати!

1 Ответ

0 голосов
/ 20 июня 2019

Нет 30-секундного ожидания по умолчанию, встроенного в селен.

Поведение, которое вы описываете, будет вызвано установкой 30-секундного неявного ожидания в некоторой точке вашего кода.

Вы можете сбросить неявное ожидание на значение по умолчанию, вызвав

driver.implicitly_wait(0)

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

Также остерегайтесь смешивания неявных и явных ожиданий.Если вы сделаете это, вы окажетесь в сферах неопределенной функциональности и в зависимости от двоичного драйвера и реализаций привязки драйвера вы можете получить различное поведение.Неявное ожидание может иметь приоритет, или явное ожидание может иметь приоритет, давая вам странное и различное время ожидания, которое не всегда имеет смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...