Как проверить, активирован ли элемент только через 60 секунд - PullRequest
0 голосов
/ 24 мая 2019

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

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

  2. Я также попробовал getAttribute («отключен»), он также возвращает false.

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

Ответы [ 3 ]

1 голос
/ 31 мая 2019

Попробуйте выполнить следующее (и при необходимости измените настройки):

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 секунд, подтверждение не будет выполнено.

0 голосов
/ 31 мая 2019

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

  • 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")
    
0 голосов
/ 25 мая 2019

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

boolean checkDisabled = element.isEnabled(); // this should return false    
Thread.sleep(60000);
boolean checkDisabled = element.isEnabled(); // this should return true
...