Как проверить, активирован ли элемент только через 60 секунд

В моем приложении есть ссылка, которая активируется через 60 секунд. Я должен убедиться, что ссылка включается только через 60 секунд, а не до этого. Перепробовал ниже способы:

  1. я пытался element to be clickable() при свободном ожидании /webdriver wait/thread.sleep, и все возвращаются, этот элемент включен, где он фактически отключен до 60 секунд.

  2. я пробовал getAttribute("отключен") также, он также возвращает ложь.

Единственное отличие, которое я вижу в html - это атрибут class. Когда он отключен, к значению атрибута класса добавляется дополнительный текст (отключен).

3 ответа

Попробуйте с этим (и настройте по мере необходимости):

long ts1 = System.currentTimeMillis()/1000;
new WebDriverWait(driver, 60).until(ExpectedConditions.attributeToBe(element, "disabled", null);
long ts2 = System.currentTimeMillis()/1000;
Assert.assertTrue((ts2-ts1)>=60);

Если элемент не будет отключен до истечения 60 секунд, произойдет сбой подтверждения.

Поскольку ссылка в приложении активируется через 60 секунд и до тех пор (будучи отключенной), class Атрибут содержит дополнительное значение отключено, для проверки этого варианта использования вы можете использовать try-catch{} блок, и вы можете использовать любую из следующих стратегий локатора на основе Python:

  • CSS_SELECTOR:

    try:
        WebDriverWait(driver, 60).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "tag_name[some_attribute='value_of_some_attribute']:not(.disabled)")))
        print("Class attribute failed to contain the value disabled for 60 seconds")
    except TimeoutException:
        print("Class attribute successfully contained the value disabled for 60 seconds")
    
  • XPATH:

    try:
        WebDriverWait(driver, 60).until(EC.element_to_be_clickable((By.XPATH, "//tag_name[@some_attribute='value_of_some_attribute' and not(@class='disabled')]")))
        print("Class attribute failed to contain the value disabled for 60 seconds")
    except TimeoutException:
        print("Class attribute successfully contained the value disabled for 60 seconds")
    

Что вы можете сделать, это сначала проверить, отключен он или нет, и через 60 секунд проверить, включен он или нет, в этом случае должен работать приведенный ниже код:

boolean checkDisabled = element.isEnabled(); // this should return false    
Thread.sleep(60000);
boolean checkDisabled = element.isEnabled(); // this should return true
Другие вопросы по тегам